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:
18
_demo/go/issue1370_case1/main.go
Normal file
18
_demo/go/issue1370_case1/main.go
Normal 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")
|
||||||
|
}
|
||||||
|
}
|
||||||
27
_demo/go/issue1370_case2/main.go
Normal file
27
_demo/go/issue1370_case2/main.go
Normal 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")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user