From e48e795f9ae520ab550e2ab940f681758b67e7ad Mon Sep 17 00:00:00 2001 From: xushiwei Date: Thu, 8 Feb 2024 22:52:51 +0800 Subject: [PATCH 1/2] markGopPkg for Gopx_XXX, Gopt_XXX, Gopo_XXX --- gop_test.go | 11 +++++++++++ import.go | 6 +----- type_var_and_const.go | 2 ++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gop_test.go b/gop_test.go index 0c079303..aaa90b8c 100644 --- a/gop_test.go +++ b/gop_test.go @@ -53,6 +53,17 @@ func newGopMainPackage() *gox.Package { // ---------------------------------------------------------------------------- +func TestGopoConst(t *testing.T) { + pkg := newMainPackage() + pkg.CB().NewConstStart(nil, "Gopo_x"). + Val("Hello").EndInit(1) + domTest(t, pkg, `package main + +const GopPackage = true +const Gopo_x = "Hello" +`) +} + func TestFmtPrintln(t *testing.T) { pkg := newGopMainPackage() pkg.NewFunc(nil, "main", nil, nil, false).BodyStart(pkg). diff --git a/import.go b/import.go index 0bea2779..11eca3b0 100644 --- a/import.go +++ b/import.go @@ -85,11 +85,7 @@ func isGopoConst(name string) bool { } func isGopFunc(name string) bool { - return isOverload(name) || isGoptFunc(name) -} - -func isGoptFunc(name string) bool { - return strings.HasPrefix(name, goptPrefix) + return isOverload(name) || strings.HasPrefix(name, goptPrefix) || strings.HasPrefix(name, gopxPrefix) } func isOverload(name string) bool { diff --git a/type_var_and_const.go b/type_var_and_const.go index 5d193a0a..b4a58c28 100644 --- a/type_var_and_const.go +++ b/type_var_and_const.go @@ -413,6 +413,8 @@ func (p *Package) newValueDecl( stmt := &ast.AssignStmt{Tok: token.DEFINE, Lhs: nameIdents} at := p.cb.startStmtAt(stmt) return &ValueDecl{names: names, tok: tok, pos: pos, scope: scope, vals: &stmt.Rhs, at: at} + } else if tok == token.CONST && len(names) == 1 && isGopoConst(names[0]) { // Gopo_XXX + p.isGopPkg = true } // var a, b = expr // const a, b = expr From 4ebcefea4c60a01cfeac30892beae6b567ecc6cc Mon Sep 17 00:00:00 2001 From: xushiwei Date: Thu, 8 Feb 2024 23:00:59 +0800 Subject: [PATCH 2/2] GeneratedHeader --- gow.go | 11 ++++++++--- package.go | 4 ---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gow.go b/gow.go index b6806de3..5c7148ed 100644 --- a/gow.go +++ b/gow.go @@ -14,7 +14,6 @@ package gox import ( - "fmt" "go/ast" "go/token" "go/types" @@ -87,6 +86,12 @@ func (p *Package) WriteTo(dst io.Writer, fname ...string) (err error) { return format.Node(dst, fset, file) } +// GeneratedHeader is the default string that the source file generated by gox start with. +// Change it if you want to make it different. +var ( + GeneratedHeader = "// Code generated by gox; DO NOT EDIT.\n\n" +) + // WriteFile writes a file named fname. // If fname is not provided, it writes the default (NOT current) file. func (p *Package) WriteFile(file string, fname ...string) (err error) { @@ -108,8 +113,8 @@ func (p *Package) WriteFile(file string, fname ...string) (err error) { os.Remove(file) } }() - if len(GeneratedHeader) > 0 { - fmt.Fprint(f, GeneratedHeader) + if GeneratedHeader != "" { + f.WriteString(GeneratedHeader) } fset := token.NewFileSet() return format.Node(f, fset, ast) diff --git a/package.go b/package.go index c32fe7ad..2f3af2e9 100644 --- a/package.go +++ b/package.go @@ -64,10 +64,6 @@ func fatal(msg string) { panic(fatalMsg(msg)) } -// GeneratedHeader is the default string that the source file generated by gox start with. -// Change it if you want to make it different. -const GeneratedHeader = "// Code generated by gox; DO NOT EDIT.\n\n" - // ---------------------------------------------------------------------------- // Recorder represents a gox event recorder.