.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.1-0.20210319172145-bda8f5cee399 / go / callgraph / cha / testdata / issue23925.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/callgraph/cha/testdata/issue23925.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.1-0.20210319172145-bda8f5cee399/go/callgraph/cha/testdata/issue23925.go
new file mode 100644 (file)
index 0000000..6a04092
--- /dev/null
@@ -0,0 +1,38 @@
+package main
+
+// Regression test for https://golang.org/issue/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