mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
![Emmanuel Odeke](/assets/img/avatar_default.png)
Follows suit with https://go-review.googlesource.com/#/c/20111. Generated by running $ grep -R 'Go Authors. All' * | cut -d":" -f1 | while read F;do perl -pi -e 's/Go Authors. All/Go Authors. All/g' $F;done The code in cmd/internal/unvendor wasn't changed. Fixes #15213 Change-Id: I4f235cee0a62ec435f9e8540a1ec08ae03b1a75f Reviewed-on: https://go-review.googlesource.com/21819 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
65 lines
972 B
Go
65 lines
972 B
Go
// 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 4316: the stack overflow check in the linker
|
|
// is confused when it encounters a split-stack function
|
|
// that needs 0 bytes of stack space.
|
|
|
|
package main
|
|
|
|
type Peano *Peano
|
|
|
|
func makePeano(n int) *Peano {
|
|
if n == 0 {
|
|
return nil
|
|
}
|
|
p := Peano(makePeano(n - 1))
|
|
return &p
|
|
}
|
|
|
|
var countArg Peano
|
|
var countResult int
|
|
|
|
func countPeano() {
|
|
if countArg == nil {
|
|
countResult = 0
|
|
return
|
|
}
|
|
countArg = *countArg
|
|
countPeano()
|
|
countResult++
|
|
}
|
|
|
|
var s = "(())"
|
|
var pT = 0
|
|
|
|
func p() {
|
|
if pT >= len(s) {
|
|
return
|
|
}
|
|
if s[pT] == '(' {
|
|
pT += 1
|
|
p()
|
|
if pT < len(s) && s[pT] == ')' {
|
|
pT += 1
|
|
} else {
|
|
return
|
|
}
|
|
p()
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
countArg = makePeano(4096)
|
|
countPeano()
|
|
if countResult != 4096 {
|
|
println("countResult =", countResult)
|
|
panic("countResult != 4096")
|
|
}
|
|
|
|
p()
|
|
}
|