summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go')
-rw-r--r--vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go65
1 files changed, 0 insertions, 65 deletions
diff --git a/vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go b/vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go
deleted file mode 100644
index 1622ec1..0000000
--- a/vendor/golang.org/x/tools/go/callgraph/cha/testdata/iface.go
+++ /dev/null
@@ -1,65 +0,0 @@
-//+build ignore
-
-package main
-
-// Test of interface calls. None of the concrete types are ever
-// instantiated or converted to interfaces.
-
-type I interface {
- f()
-}
-
-type J interface {
- f()
- g()
-}
-
-type C int // implements I
-
-func (*C) f()
-
-type D int // implements I and J
-
-func (*D) f()
-func (*D) g()
-
-func one(i I, j J) {
- i.f() // calls *C and *D
-}
-
-func two(i I, j J) {
- j.f() // calls *D (but not *C, even though it defines method f)
-}
-
-func three(i I, j J) {
- j.g() // calls *D
-}
-
-func four(i I, j J) {
- Jf := J.f
- if unknown {
- Jf = nil // suppress SSA constant propagation
- }
- Jf(nil) // calls *D
-}
-
-func five(i I, j J) {
- jf := j.f
- if unknown {
- jf = nil // suppress SSA constant propagation
- }
- jf() // calls *D
-}
-
-var unknown bool
-
-// WANT:
-// Dynamic calls
-// (J).f$bound --> (*D).f
-// (J).f$thunk --> (*D).f
-// five --> (J).f$bound
-// four --> (J).f$thunk
-// one --> (*C).f
-// one --> (*D).f
-// three --> (*D).g
-// two --> (*D).f