test: add regression tests for issue #1370
Add three regression test cases for cross-package interface private method calls: 1. _cmptest/issue1370_gotypes/ - Tests go/types.Object interface with Scope.Insert() which calls the private setParent() method 2. _cmptest/issue1370_goast/ - Tests go/ast.Expr interface conversion with ast.Ident which has a private exprNode() method 3. _cmptest/issue1370_geometry/ - Tests custom geometry.Shape interface with private methods (validate, setID) across package boundaries These tests verify the fix in ssa/abitype.go correctly sets the interface metadata's PkgPath to the interface definition package instead of the compilation package, preventing segmentation faults when calling private methods. Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: luoliwoshang <51194195+luoliwoshang@users.noreply.github.com>
This commit is contained in:
25
_cmptest/issue1370_goast/goast.go
Normal file
25
_cmptest/issue1370_goast/goast.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/token"
|
||||
)
|
||||
|
||||
func main() {
|
||||
ident := &ast.Ident{
|
||||
NamePos: token.Pos(42),
|
||||
Name: "foo",
|
||||
}
|
||||
|
||||
var expr ast.Expr = ident
|
||||
pos := expr.Pos()
|
||||
|
||||
fmt.Printf("Position: %d\n", pos)
|
||||
if pos != 42 {
|
||||
println("FAIL: Position mismatch")
|
||||
return
|
||||
}
|
||||
|
||||
println("SUCCESS: ast.Expr interface method calls work correctly")
|
||||
}
|
||||
Reference in New Issue
Block a user