Commit bc7a3a62 authored by Robert Griesemer's avatar Robert Griesemer

go/importer: implement support for gccgo

Change-Id: I0e1aab2fe2340a1fbb7f377dbd7a72ea6f0477d8
Reviewed-on: https://go-review.googlesource.com/11153Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
parent 289e2829
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
package importer package importer
import ( import (
"go/internal/gccgoimporter"
"go/internal/gcimporter" "go/internal/gcimporter"
"go/types" "go/types"
"io" "io"
...@@ -27,8 +28,17 @@ func For(compiler string, lookup Lookup) types.Importer { ...@@ -27,8 +28,17 @@ func For(compiler string, lookup Lookup) types.Importer {
} }
panic("gc importer for custom import path lookup not yet implemented") panic("gc importer for custom import path lookup not yet implemented")
case "gccgo": case "gccgo":
// TODO(gri) We have the code. Plug it in. if lookup == nil {
panic("gccgo importer unimplemented") 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 // compiler not supported
return nil return nil
...@@ -39,8 +49,21 @@ func Default() types.Importer { ...@@ -39,8 +49,21 @@ func Default() types.Importer {
return For(runtime.Compiler, nil) return For(runtime.Compiler, nil)
} }
// gc support
type gcimports map[string]*types.Package type gcimports map[string]*types.Package
func (m gcimports) Import(path string) (*types.Package, error) { func (m gcimports) Import(path string) (*types.Package, error) {
return gcimporter.Import(m, path) 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)
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment