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>
26 lines
357 B
Go
26 lines
357 B
Go
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")
|
|
}
|