test(demo): add regression demos for issue #1370 cases

- case1: go/types.Object with Scope.Insert() calling private setParent()
- case2: go/ast.Expr interface conversion with private exprNode()

Generated with [codeagent](https://github.com/qbox/codeagent)
Co-authored-by: luoliwoshang <51194195+luoliwoshang@users.noreply.github.com>
This commit is contained in:
xgopilot
2025-10-27 10:34:53 +00:00
parent 18de107520
commit 89e483b8ec
2 changed files with 45 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
package main
import (
"go/types"
)
func main() {
scope := types.NewScope(nil, 0, 0, "test")
obj := types.NewVar(0, nil, "x", types.Typ[types.Int])
scope.Insert(obj)
if scope.Lookup("x") == obj {
println("SUCCESS: Scope.Insert and Lookup work correctly")
} else {
println("FAIL: Lookup returned wrong object")
}
}

View File

@@ -0,0 +1,27 @@
package main
import (
"fmt"
"go/ast"
"go/token"
)
func main() {
// Create an identifier node
ident := &ast.Ident{
NamePos: token.Pos(1),
Name: "foo",
}
// Convert to ast.Expr interface
// The ast.Expr interface has a private method exprNode()
// Before the fix, this interface conversion would cause segfaults
// when calling methods because the PkgPath was incorrectly set
var expr ast.Expr = ident
// Call methods on the interface
fmt.Printf("Identifier: %s\n", ident.Name)
fmt.Printf("Position: %d\n", expr.Pos())
println("SUCCESS: ast.Expr interface conversion works correctly")
}