diff --git a/cl/compile.go b/cl/compile.go index 794359187..ab52b6172 100644 --- a/cl/compile.go +++ b/cl/compile.go @@ -208,6 +208,9 @@ type Config struct { // Outline = true means to skip compiling function bodies. Outline bool + + // AddMarkStmt = true means to add const __gop_autogen__ = true. + AddMarkStmt bool } type nodeInterp struct { @@ -498,6 +501,11 @@ func NewPackage(pkgPath string, pkg *ast.Package, conf *Config) (p *gox.Package, }() } p = gox.NewPackage(pkgPath, pkg.Name, confGox) + + if conf.AddMarkStmt { + p.CB().NewConstStart(nil, "__gop_autogen__").Val(true).EndInit(1) + } + ctx.cpkgs = cpackages.NewImporter(&cpackages.Config{ Pkg: p, LookupPub: conf.LookupPub, }) diff --git a/load.go b/load.go index f5706c99b..fe3693936 100644 --- a/load.go +++ b/load.go @@ -192,6 +192,7 @@ func LoadDir(dir string, conf *Config, genTestPkg bool, promptGenGo ...bool) (ou Importer: imp, LookupClass: mod.LookupClass, LookupPub: c2go.LookupPub(mod), + AddMarkStmt: true, } for name, pkg := range pkgs { @@ -277,6 +278,7 @@ func LoadFiles(dir string, files []string, conf *Config) (out *gox.Package, err Importer: imp, LookupClass: mod.LookupClass, LookupPub: c2go.LookupPub(mod), + AddMarkStmt: true, } out, err = cl.NewPackage("", pkg, clConf) if err != nil {