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