summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go')
-rw-r--r--vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go b/vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go
new file mode 100644
index 0000000..59eaf18
--- /dev/null
+++ b/vendor/golang.org/x/tools/go/callgraph/cha/testdata/issue23925.go
@@ -0,0 +1,38 @@
+package main
+
+// Regression test for https://github.com/golang/go/issues/23925
+
+type stringFlagImpl string
+
+func (*stringFlagImpl) Set(s string) error { return nil }
+
+type boolFlagImpl bool
+
+func (*boolFlagImpl) Set(s string) error { return nil }
+func (*boolFlagImpl) extra() {}
+
+// A copy of flag.boolFlag interface, without a dependency.
+// Must appear first, so that it becomes the owner of the Set methods.
+type boolFlag interface {
+ flagValue
+ extra()
+}
+
+// A copy of flag.Value, without adding a dependency.
+type flagValue interface {
+ Set(string) error
+}
+
+func main() {
+ var x flagValue = new(stringFlagImpl)
+ x.Set("")
+
+ var y boolFlag = new(boolFlagImpl)
+ y.Set("")
+}
+
+// WANT:
+// Dynamic calls
+// main --> (*boolFlagImpl).Set
+// main --> (*boolFlagImpl).Set
+// main --> (*stringFlagImpl).Set