...
Run Format

Source file test/fixedbugs/issue5231.go

Documentation: test/fixedbugs

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

View as plain text