| // compile |
| |
| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Issue 5231: method values lose their variadic property. |
| |
| package p |
| |
| type T int |
| |
| func (t T) NotVariadic(s []int) int { |
| return int(t) + s[0] |
| } |
| |
| func (t T) Variadic(s ...int) int { |
| return int(t) + s[0] |
| } |
| |
| type I interface { |
| NotVariadic(s []int) int |
| Variadic(s ...int) int |
| } |
| |
| func F() { |
| var t T |
| var p *T = &t |
| var i I = p |
| |
| nv := t.NotVariadic |
| nv = p.NotVariadic |
| nv = i.NotVariadic |
| var s int = nv([]int{1, 2, 3}) |
| |
| v := t.Variadic |
| v = p.Variadic |
| v = i.Variadic |
| s = v(1, 2, 3) |
| |
| var f1 func([]int) int = nv |
| var f2 func(...int) int = v |
| |
| _, _, _ = f1, f2, s |
| } |