compileGlobal: skip pyVar

This commit is contained in:
xushiwei
2024-05-15 16:51:44 +08:00
parent c2e5a78076
commit ee3f55dd41
2 changed files with 13 additions and 6 deletions

View File

@@ -359,24 +359,32 @@ const (
ignoredVar = iota
goVar = int(llssa.InGo)
cVar = int(llssa.InC)
pyVar = int(llssa.InPython)
)
func (p *context) varName(pkg *types.Package, v *ssa.Global) (vName string, vtype int) {
name := llssa.FullName(pkg, v.Name())
if v, ok := p.link[name]; ok {
if strings.HasPrefix(v, "py.") {
return v[3:], pyVar
}
return v, cVar
}
return name, goVar
}
func (p *context) varOf(v *ssa.Global) (ret llssa.Global) {
func (p *context) varOf(v *ssa.Global) llssa.Expr {
pkgTypes := p.ensureLoaded(v.Pkg.Pkg)
pkg := p.pkg
name, vtype := p.varName(pkgTypes, v)
if ret = pkg.VarOf(name); ret == nil {
if vtype == pyVar {
panic("todo")
}
ret := pkg.VarOf(name)
if ret == nil {
ret = pkg.NewVar(name, v.Type(), llssa.Background(vtype))
}
return
return ret.Expr
}
func (p *context) ensureLoaded(pkgTypes *types.Package) *types.Package {