diff --git a/cl/cltest/cltest.go b/cl/cltest/cltest.go index 6b1208c1..fbe500be 100644 --- a/cl/cltest/cltest.go +++ b/cl/cltest/cltest.go @@ -143,7 +143,7 @@ func TestCompileEx(t *testing.T, src any, fname, expected string) { foo.WriteTo(os.Stderr) prog := ssatest.NewProgramEx(t, nil, imp) - ret, err := cl.NewPackage(prog, foo, files) + ret, err := cl.NewPackage(prog, foo, nil, files) if err != nil { t.Fatal("cl.NewPackage failed:", err) } diff --git a/cl/compile.go b/cl/compile.go index 4239f465..06ca17f5 100644 --- a/cl/compile.go +++ b/cl/compile.go @@ -953,7 +953,7 @@ func (p *context) compileValues(b llssa.Builder, vals []ssa.Value, hasVArg int) // ----------------------------------------------------------------------------- // NewPackage compiles a Go package to LLVM IR package. -func NewPackage(prog llssa.Program, pkg *ssa.Package, files []*ast.File) (ret llssa.Package, err error) { +func NewPackage(prog llssa.Program, pkg, alt *ssa.Package, files []*ast.File) (ret llssa.Package, err error) { type namedMember struct { name string val ssa.Member diff --git a/internal/build/build.go b/internal/build/build.go index 82e1bfd8..eacb4277 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -365,7 +365,12 @@ func buildPkg(prog llssa.Program, aPkg *aPackage, mode Mode, verbose bool) { pkg.ExportFile = "" return } - ret, err := cl.NewPackage(prog, aPkg.SSA, pkg.Syntax) + syntax := pkg.Syntax + if altPkg := aPkg.AltPkg; altPkg != nil { + // TODO: merge pkg.Types + syntax = append(syntax, altPkg.Syntax...) + } + ret, err := cl.NewPackage(prog, aPkg.SSA, aPkg.AltSSA, syntax) check(err) if needLLFile(mode) { pkg.ExportFile += ".ll" diff --git a/internal/llgen/llgen.go b/internal/llgen/llgen.go index 2a62b637..d50dfe56 100644 --- a/internal/llgen/llgen.go +++ b/internal/llgen/llgen.go @@ -80,7 +80,7 @@ func Gen(pkgPath, inFile string, src any) string { return ret }) - ret, err := cl.NewPackage(prog, ssaPkg, files) + ret, err := cl.NewPackage(prog, ssaPkg, nil, files) check(err) if prog.NeedPyInit { // call PyInit if needed diff --git a/internal/llgen/llgenf.go b/internal/llgen/llgenf.go index 843c245a..36adf090 100644 --- a/internal/llgen/llgenf.go +++ b/internal/llgen/llgenf.go @@ -80,7 +80,7 @@ func GenFrom(fileOrPkg string) string { ssaPkg.WriteTo(os.Stderr) } - ret, err := cl.NewPackage(prog, ssaPkg, pkg.Syntax) + ret, err := cl.NewPackage(prog, ssaPkg, nil, pkg.Syntax) check(err) if prog.NeedPyInit { // call PyInit if needed