diff --git a/bind/testdata/java.go.golden b/bind/testdata/java.go.golden index 5e5baa2..48eefad 100644 --- a/bind/testdata/java.go.golden +++ b/bind/testdata/java.go.golden @@ -56,7 +56,6 @@ var ( // Cast panics if the argument is not a proxy or if the underlying object does // not extend or implement java.lang.Long. Cast func(v interface{}) Java.Java_lang_Long - ) // File is generated by gobind. Do not edit. diff --git a/internal/importers/ast.go b/internal/importers/ast.go index 3c798c1..9c8ac2a 100644 --- a/internal/importers/ast.go +++ b/internal/importers/ast.go @@ -227,7 +227,6 @@ func (v *refsSaver) Visit(n ast.Node) ast.Visitor { if v.insideStruct && len(n.Names) == 1 && !n.Names[0].IsExported() { return nil } - return v case *ast.SelectorExpr: v.Names[n.Sel.Name] = struct{}{} if ref, ok := v.parseRef(n); ok { @@ -235,8 +234,8 @@ func (v *refsSaver) Visit(n ast.Node) ast.Visitor { v.refMap[ref] = struct{}{} v.Refs = append(v.Refs, ref) } + return nil } - return nil case *ast.FuncDecl: if n.Recv != nil { // Methods v.Names[n.Name.Name] = struct{}{} diff --git a/internal/importers/ast_test.go b/internal/importers/ast_test.go index a26b3c3..b879216 100644 --- a/internal/importers/ast_test.go +++ b/internal/importers/ast_test.go @@ -11,6 +11,7 @@ func TestAnalyzer(t *testing.T) { file := `package ast_test import "Prefix/some/pkg/Name" +import "Prefix/some/pkg/Name2" const c = Name.Constant @@ -18,6 +19,10 @@ type T struct { Name.Type hidden Name.Type2 } + +func f() { + Name2.Func().Func().Func() +} ` fset := token.NewFileSet() f, err := parser.ParseFile(fset, "ast_test.go", file, parser.AllErrors) @@ -28,12 +33,18 @@ type T struct { if err != nil { t.Fatal(err) } - if len(refs.Refs) != 2 { - t.Fatalf("expected 2 references; got %d", len(refs.Refs)) + exps := []PkgRef{ + {Pkg: "some/pkg/Name", Name: "Constant"}, + {Pkg: "some/pkg/Name", Name: "Type"}, + {Pkg: "some/pkg/Name2", Name: "Func"}, } - got := refs.Refs[0] - if exp := (PkgRef{"some/pkg/Name", "Constant"}); exp != got { - t.Errorf("expected ref %v; got %v", exp, got) + if len(refs.Refs) != len(exps) { + t.Fatalf("expected %d references; got %d", len(exps), len(refs.Refs)) + } + for i, exp := range exps { + if got := refs.Refs[i]; exp != got { + t.Errorf("expected ref %v; got %v", exp, got) + } } if _, exists := refs.Names["Constant"]; !exists { t.Errorf("expected \"Constant\" in the names set") @@ -45,9 +56,9 @@ type T struct { exp := Struct{ Name: "T", Pkg: "ast_test", - Refs: []PkgRef{{"some/pkg/Name", "Type"}}, + Refs: []PkgRef{{Pkg: "some/pkg/Name", Name: "Type"}}, } if !reflect.DeepEqual(exp, s) { - t.Errorf("expected struct %v; got %v", exp, got) + t.Errorf("expected struct %v; got %v", exp, s) } }