From: Robert Griesemer Date: Wed, 17 Jun 2015 00:28:01 +0000 (-0700) Subject: go/importer: implement support for gccgo X-Git-Tag: go1.5beta1~210 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bc7a3a62cff96c14dc7d97d03a410151fe4ba807;p=gostls13.git go/importer: implement support for gccgo Change-Id: I0e1aab2fe2340a1fbb7f377dbd7a72ea6f0477d8 Reviewed-on: https://go-review.googlesource.com/11153 Reviewed-by: Alan Donovan --- diff --git a/src/go/importer/importer.go b/src/go/importer/importer.go index 1ac44c7302..4590ca30e6 100644 --- a/src/go/importer/importer.go +++ b/src/go/importer/importer.go @@ -6,6 +6,7 @@ package importer import ( + "go/internal/gccgoimporter" "go/internal/gcimporter" "go/types" "io" @@ -27,8 +28,17 @@ func For(compiler string, lookup Lookup) types.Importer { } panic("gc importer for custom import path lookup not yet implemented") case "gccgo": - // TODO(gri) We have the code. Plug it in. - panic("gccgo importer unimplemented") + if lookup == nil { + var inst gccgoimporter.GccgoInstallation + if err := inst.InitFromDriver("gccgo"); err != nil { + return nil + } + return &gccgoimports{ + packages: make(map[string]*types.Package), + importer: inst.GetImporter(nil, nil), + } + } + panic("gccgo importer for custom import path lookup not yet implemented") } // compiler not supported return nil @@ -39,8 +49,21 @@ func Default() types.Importer { return For(runtime.Compiler, nil) } +// gc support + type gcimports map[string]*types.Package func (m gcimports) Import(path string) (*types.Package, error) { return gcimporter.Import(m, path) } + +// gccgo support + +type gccgoimports struct { + packages map[string]*types.Package + importer gccgoimporter.Importer +} + +func (m *gccgoimports) Import(path string) (*types.Package, error) { + return m.importer(m.packages, path) +}