Plan 9 from Bell Labs’s /usr/web/sources/contrib/stallion/root/arm/go/test/fixedbugs/issue5231.go

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


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

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].