| 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 |