Initial commit: Go 1.23 release state
This commit is contained in:
84
test/fixedbugs/bug027.go
Normal file
84
test/fixedbugs/bug027.go
Normal file
@@ -0,0 +1,84 @@
|
||||
// run
|
||||
|
||||
// Copyright 2009 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.
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Element interface {
|
||||
}
|
||||
|
||||
type Vector struct {
|
||||
nelem int
|
||||
elem []Element
|
||||
}
|
||||
|
||||
func New() *Vector {
|
||||
v := new(Vector)
|
||||
v.nelem = 0
|
||||
v.elem = make([]Element, 10)
|
||||
return v
|
||||
}
|
||||
|
||||
func (v *Vector) At(i int) Element {
|
||||
return v.elem[i]
|
||||
}
|
||||
|
||||
func (v *Vector) Insert(e Element) {
|
||||
v.elem[v.nelem] = e
|
||||
v.nelem++
|
||||
}
|
||||
|
||||
func main() {
|
||||
type I struct{ val int }
|
||||
i0 := new(I)
|
||||
i0.val = 0
|
||||
i1 := new(I)
|
||||
i1.val = 11
|
||||
i2 := new(I)
|
||||
i2.val = 222
|
||||
i3 := new(I)
|
||||
i3.val = 3333
|
||||
i4 := new(I)
|
||||
i4.val = 44444
|
||||
v := New()
|
||||
r := "hi\n"
|
||||
v.Insert(i4)
|
||||
v.Insert(i3)
|
||||
v.Insert(i2)
|
||||
v.Insert(i1)
|
||||
v.Insert(i0)
|
||||
for i := 0; i < v.nelem; i++ {
|
||||
var x *I
|
||||
x = v.At(i).(*I)
|
||||
r += fmt.Sprintln(i, x.val) // prints correct list
|
||||
}
|
||||
for i := 0; i < v.nelem; i++ {
|
||||
r += fmt.Sprintln(i, v.At(i).(*I).val)
|
||||
}
|
||||
expect := `hi
|
||||
0 44444
|
||||
1 3333
|
||||
2 222
|
||||
3 11
|
||||
4 0
|
||||
0 44444
|
||||
1 3333
|
||||
2 222
|
||||
3 11
|
||||
4 0
|
||||
`
|
||||
if r != expect {
|
||||
panic(r)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
bug027.go:50: illegal types for operand
|
||||
(<Element>I{}) CONV (<I>{})
|
||||
bug027.go:50: illegal types for operand
|
||||
(<Element>I{}) CONV (<I>{})
|
||||
*/
|
||||
Reference in New Issue
Block a user