llgoi: Fix importing source packages together with dependent binary packages.

Note that this means that llgoi does not support the case
where a package's pkgpath is different from its import path,
but I don't think this should actually happen with llgoi.

Differential Revision: http://reviews.llvm.org/D8403

llvm-svn: 232612
This commit is contained in:
Peter Collingbourne 2015-03-18 06:04:22 +00:00
parent 28aae9c29b
commit 6092d2c065
4 changed files with 27 additions and 1 deletions

View File

@ -102,6 +102,9 @@ func (in *interp) makeCompilerOptions() error {
if pkg, ok := in.inputPkgmap[pkgpath]; ok {
return pkg, nil
}
if pkg, ok := pkgmap[pkgpath]; ok && pkg.Complete() {
return pkg, nil
}
return origImporter(pkgmap, pkgpath)
}
return nil

View File

@ -1,5 +1,8 @@
package bar
import "strconv"
func Answer() int {
return 42
n, _ := strconv.Atoi("42")
return n
}

View File

@ -7,8 +7,14 @@ import "foo"
// CHECK: # bar
// CHECK: # foo
// Test that importing binary after source works.
import "strconv"
foo.Answer()
// CHECK: #0 int = 42
strconv.FormatBool(true)
// CHECK: #0 string = true
import "foo_cgo"
// CHECK: foo_cgo: cannot load cgo package

View File

@ -0,0 +1,14 @@
// RUN: env GOPATH=%S/Inputs llgoi < %s | FileCheck %s
// Test that importing binary before source works.
import "strconv"
import "foo"
// CHECK: # bar
// CHECK: # foo
foo.Answer()
// CHECK: #0 int = 42
strconv.FormatBool(true)
// CHECK: #0 string = true