go source for verification 2026-05-22
This commit is contained in:
61
test/fixedbugs/issue69434.go
Normal file
61
test/fixedbugs/issue69434.go
Normal file
@@ -0,0 +1,61 @@
|
||||
// run
|
||||
|
||||
// Copyright 2024 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 (
|
||||
"iter"
|
||||
)
|
||||
|
||||
func All() iter.Seq[int] {
|
||||
return func(yield func(int) bool) {
|
||||
for i := 0; i < 10; i++ {
|
||||
growStack(512)
|
||||
if !yield(i) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type S struct {
|
||||
round int
|
||||
}
|
||||
|
||||
func NewS(round int) *S {
|
||||
s := &S{round: round}
|
||||
return s
|
||||
}
|
||||
|
||||
func (s *S) check(round int) {
|
||||
if s.round != round {
|
||||
panic("bad round")
|
||||
}
|
||||
}
|
||||
|
||||
func f() {
|
||||
rounds := 0
|
||||
s := NewS(rounds)
|
||||
s.check(rounds)
|
||||
|
||||
for range All() {
|
||||
s.check(rounds)
|
||||
rounds++
|
||||
s = NewS(rounds)
|
||||
s.check(rounds)
|
||||
}
|
||||
}
|
||||
|
||||
func growStack(i int) {
|
||||
if i == 0 {
|
||||
return
|
||||
}
|
||||
growStack(i - 1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
f()
|
||||
}
|
||||
Reference in New Issue
Block a user