Skip to content

Commit bc7a3a6

Browse files
committed
go/importer: implement support for gccgo
Change-Id: I0e1aab2fe2340a1fbb7f377dbd7a72ea6f0477d8 Reviewed-on: https://go-review.googlesource.com/11153 Reviewed-by: Alan Donovan <[email protected]>
1 parent 289e282 commit bc7a3a6

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

src/go/importer/importer.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package importer
77

88
import (
9+
"go/internal/gccgoimporter"
910
"go/internal/gcimporter"
1011
"go/types"
1112
"io"
@@ -27,8 +28,17 @@ func For(compiler string, lookup Lookup) types.Importer {
2728
}
2829
panic("gc importer for custom import path lookup not yet implemented")
2930
case "gccgo":
30-
// TODO(gri) We have the code. Plug it in.
31-
panic("gccgo importer unimplemented")
31+
if lookup == nil {
32+
var inst gccgoimporter.GccgoInstallation
33+
if err := inst.InitFromDriver("gccgo"); err != nil {
34+
return nil
35+
}
36+
return &gccgoimports{
37+
packages: make(map[string]*types.Package),
38+
importer: inst.GetImporter(nil, nil),
39+
}
40+
}
41+
panic("gccgo importer for custom import path lookup not yet implemented")
3242
}
3343
// compiler not supported
3444
return nil
@@ -39,8 +49,21 @@ func Default() types.Importer {
3949
return For(runtime.Compiler, nil)
4050
}
4151

52+
// gc support
53+
4254
type gcimports map[string]*types.Package
4355

4456
func (m gcimports) Import(path string) (*types.Package, error) {
4557
return gcimporter.Import(m, path)
4658
}
59+
60+
// gccgo support
61+
62+
type gccgoimports struct {
63+
packages map[string]*types.Package
64+
importer gccgoimporter.Importer
65+
}
66+
67+
func (m *gccgoimports) Import(path string) (*types.Package, error) {
68+
return m.importer(m.packages, path)
69+
}

0 commit comments

Comments
 (0)