diff --git a/go/callgraph/cha/testdata/generics.go b/go/callgraph/cha/testdata/generics.go index 2711dc0d27..79250a56ca 100644 --- a/go/callgraph/cha/testdata/generics.go +++ b/go/callgraph/cha/testdata/generics.go @@ -27,7 +27,7 @@ func f(h func(), g func(I), k func(A), a A, b B) { h() k(a) - g(b) // g:func(I) is not matched by instantiated[[B]]:func(B) + g(b) // g:func(I) is not matched by instantiated[B]:func(B) instantiated[A](a) // static call instantiated[B](b) // static call @@ -38,8 +38,8 @@ func f(h func(), g func(I), k func(A), a A, b B) { // (*A).Foo --> (A).Foo // (*B).Foo --> (B).Foo // f --> Bar -// f --> instantiated[[main.A]] -// f --> instantiated[[main.A]] -// f --> instantiated[[main.B]] -// instantiated[[main.A]] --> (A).Foo -// instantiated[[main.B]] --> (B).Foo +// f --> instantiated[main.A] +// f --> instantiated[main.A] +// f --> instantiated[main.B] +// instantiated[main.A] --> (A).Foo +// instantiated[main.B] --> (B).Foo diff --git a/go/callgraph/rta/testdata/generics.go b/go/callgraph/rta/testdata/generics.go index 012a64c4d2..d962fa43f1 100644 --- a/go/callgraph/rta/testdata/generics.go +++ b/go/callgraph/rta/testdata/generics.go @@ -53,27 +53,27 @@ func lambda[X I]() func() func() { // All calls // (*C).Foo --> (C).Foo // (A).Foo$bound --> (A).Foo -// instantiated[[main.A]] --> (A).Foo -// instantiated[[main.B]] --> (B).Foo +// instantiated[main.A] --> (A).Foo +// instantiated[main.B] --> (B).Foo // main --> (*C).Foo // main --> (A).Foo$bound // main --> (C).Foo -// main --> instantiated[[main.A]] -// main --> instantiated[[main.B]] -// main --> lambda[[main.A]] -// main --> lambda[[main.A]]$1 -// main --> local[[main.C]] +// main --> instantiated[main.A] +// main --> instantiated[main.B] +// main --> lambda[main.A] +// main --> lambda[main.A]$1 +// main --> local[main.C] // Reachable functions // (*C).Foo // (A).Foo // (A).Foo$bound // (B).Foo // (C).Foo -// instantiated[[main.A]] -// instantiated[[main.B]] -// lambda[[main.A]] -// lambda[[main.A]]$1 -// local[[main.C]] +// instantiated[main.A] +// instantiated[main.B] +// lambda[main.A] +// lambda[main.A]$1 +// local[main.C] // Reflect types // *C // C diff --git a/go/callgraph/static/static_test.go b/go/callgraph/static/static_test.go index 47f32d76f0..0a108d3d2b 100644 --- a/go/callgraph/static/static_test.go +++ b/go/callgraph/static/static_test.go @@ -93,10 +93,10 @@ func TestStatic(t *testing.T) { {genericsInput, []string{ "(*A).F -> (A).F", "(*B).F -> (B).F", - "f -> instantiated[[P.A]]", - "f -> instantiated[[P.B]]", - "instantiated[[P.A]] -> (A).F", - "instantiated[[P.B]] -> (B).F", + "f -> instantiated[P.A]", + "f -> instantiated[P.B]", + "instantiated[P.A] -> (A).F", + "instantiated[P.B] -> (B).F", }, true}, } { if e.typeparams && !typeparams.Enabled { diff --git a/go/callgraph/vta/testdata/src/callgraph_generics.go b/go/callgraph/vta/testdata/src/callgraph_generics.go index b0fcb02559..da3dca52a9 100644 --- a/go/callgraph/vta/testdata/src/callgraph_generics.go +++ b/go/callgraph/vta/testdata/src/callgraph_generics.go @@ -45,17 +45,17 @@ func Foo(a A, b B) { // *t1 = b // t2 = new bool (x) // *t2 = true:bool -// t3 = instantiated[[bool]](t2) +// t3 = instantiated[bool](t2) // t4 = new int (y) // *t4 = 1:int -// t5 = instantiated[[int]](t4) +// t5 = instantiated[int](t4) // t6 = *t0 -// t7 = interfaceInstantiated[[testdata.A]](t6) +// t7 = interfaceInstantiated[testdata.A](t6) // t8 = *t1 -// t9 = interfaceInstantiated[[testdata.B]](t8) +// t9 = interfaceInstantiated[testdata.B](t8) // return // -//func interfaceInstantiated[[testdata.B]](x B): +//func interfaceInstantiated[testdata.B](x B): // t0 = local B (x) // *t0 = x // t1 = *t0 @@ -66,6 +66,6 @@ func Foo(a A, b B) { // (external) // WANT: -// Foo: instantiated[[bool]](t2) -> instantiated[[bool]]; instantiated[[int]](t4) -> instantiated[[int]]; interfaceInstantiated[[testdata.A]](t6) -> interfaceInstantiated[[testdata.A]]; interfaceInstantiated[[testdata.B]](t8) -> interfaceInstantiated[[testdata.B]] -// interfaceInstantiated[[testdata.B]]: (B).Bar(t1) -> B.Bar -// interfaceInstantiated[[testdata.A]]: (A).Bar(t1) -> A.Bar +// Foo: instantiated[bool](t2) -> instantiated[bool]; instantiated[int](t4) -> instantiated[int]; interfaceInstantiated[testdata.A](t6) -> interfaceInstantiated[testdata.A]; interfaceInstantiated[testdata.B](t8) -> interfaceInstantiated[testdata.B] +// interfaceInstantiated[testdata.B]: (B).Bar(t1) -> B.Bar +// interfaceInstantiated[testdata.A]: (A).Bar(t1) -> A.Bar diff --git a/go/pointer/testdata/typeparams.go b/go/pointer/testdata/typeparams.go index ddd0a74383..461ba44376 100644 --- a/go/pointer/testdata/typeparams.go +++ b/go/pointer/testdata/typeparams.go @@ -62,7 +62,7 @@ func main() { fn(&b) } -// @calls (*fmt.pp).handleMethods -> (*command-line-arguments.S[int]).String[[int]] -// @calls (*fmt.pp).handleMethods -> (*command-line-arguments.S[bool]).String[[bool]] -// @calls command-line-arguments.Caller[[int]] -> (*command-line-arguments.S[int]).String[[int]] -// @calls command-line-arguments.Caller[[bool]] -> (*command-line-arguments.S[bool]).String[[bool]] +// @calls (*fmt.pp).handleMethods -> (*command-line-arguments.S[int]).String[int] +// @calls (*fmt.pp).handleMethods -> (*command-line-arguments.S[bool]).String[bool] +// @calls command-line-arguments.Caller[int] -> (*command-line-arguments.S[int]).String[int] +// @calls command-line-arguments.Caller[bool] -> (*command-line-arguments.S[bool]).String[bool] diff --git a/go/ssa/builder_test.go b/go/ssa/builder_test.go index ba9aaf768f..1975e26e45 100644 --- a/go/ssa/builder_test.go +++ b/go/ssa/builder_test.go @@ -627,19 +627,19 @@ var indirect = R[int].M "bound", "*func() int", "(p.S[int]).M$bound", - "(p.S[int]).M[[int]]", + "(p.S[int]).M[int]", }, { "thunk", "*func(p.S[int]) int", "(p.S[int]).M$thunk", - "(p.S[int]).M[[int]]", + "(p.S[int]).M[int]", }, { "indirect", "*func(p.R[int]) int", "(p.R[int]).M$thunk", - "(p.S[int]).M[[int]]", + "(p.S[int]).M[int]", }, } { entry := entry @@ -871,7 +871,7 @@ func TestGenericFunctionSelector(t *testing.T) { } sort.Strings(callees) // ignore the order in the code. - want := "[a.F[[int]] a.G[[int string]] a.H[[int]]]" + want := "[a.F[int] a.G[int string] a.H[int]]" if got := fmt.Sprint(callees); got != want { t.Errorf("Expected main() to contain calls %v. got %v", want, got) } diff --git a/go/ssa/instantiate.go b/go/ssa/instantiate.go index 65c1e99700..049b53487d 100644 --- a/go/ssa/instantiate.go +++ b/go/ssa/instantiate.go @@ -137,7 +137,7 @@ func createInstance(fn *Function, targs []types.Type, info *types.Info, syntax a sig = prog.canon.Type(instance).(*types.Signature) } - name := fmt.Sprintf("%s[%s]", fn.Name(), targs) // may not be unique + name := fmt.Sprintf("%s%s", fn.Name(), targs) // may not be unique synthetic := fmt.Sprintf("instantiation of %s", fn.Name()) instance := &Function{ name: name,