Initial commit: Go 1.23 release state
This commit is contained in:
50
test/fixedbugs/issue4167.go
Normal file
50
test/fixedbugs/issue4167.go
Normal file
@@ -0,0 +1,50 @@
|
||||
// run
|
||||
|
||||
// Copyright 2012 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 4167: inlining of a (*T).Method expression taking
|
||||
// its arguments from a multiple return breaks the compiler.
|
||||
|
||||
package main
|
||||
|
||||
type pa []int
|
||||
|
||||
type p int
|
||||
|
||||
func (this *pa) func1() (v *p, c int) {
|
||||
for _ = range *this {
|
||||
c++
|
||||
}
|
||||
v = (*p)(&c)
|
||||
return
|
||||
}
|
||||
|
||||
func (this *pa) func2() p {
|
||||
return (*p).func3(this.func1())
|
||||
}
|
||||
|
||||
func (this *p) func3(f int) p {
|
||||
return *this
|
||||
}
|
||||
|
||||
func (this *pa) func2dots() p {
|
||||
return (*p).func3(this.func1())
|
||||
}
|
||||
|
||||
func (this *p) func3dots(f ...int) p {
|
||||
return *this
|
||||
}
|
||||
|
||||
func main() {
|
||||
arr := make(pa, 13)
|
||||
length := arr.func2()
|
||||
if int(length) != len(arr) {
|
||||
panic("length != len(arr)")
|
||||
}
|
||||
length = arr.func2dots()
|
||||
if int(length) != len(arr) {
|
||||
panic("length != len(arr)")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user