6
6
package importer
7
7
8
8
import (
9
+ "go/internal/gccgoimporter"
9
10
"go/internal/gcimporter"
10
11
"go/types"
11
12
"io"
@@ -27,8 +28,17 @@ func For(compiler string, lookup Lookup) types.Importer {
27
28
}
28
29
panic ("gc importer for custom import path lookup not yet implemented" )
29
30
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" )
32
42
}
33
43
// compiler not supported
34
44
return nil
@@ -39,8 +49,21 @@ func Default() types.Importer {
39
49
return For (runtime .Compiler , nil )
40
50
}
41
51
52
+ // gc support
53
+
42
54
type gcimports map [string ]* types.Package
43
55
44
56
func (m gcimports ) Import (path string ) (* types.Package , error ) {
45
57
return gcimporter .Import (m , path )
46
58
}
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