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