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