|  | // Copyright 2017 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" | 
|  | "time" | 
|  | ) | 
|  |  | 
|  | func main() { | 
|  | growstack() // Use stack early to prevent growth during test, which confuses gdb | 
|  | test() | 
|  | } | 
|  |  | 
|  | //go:noinline | 
|  | func id(x int) int { | 
|  | return x | 
|  | } | 
|  |  | 
|  | func test() { | 
|  | x := id(0) | 
|  | y := id(0) | 
|  | fmt.Println(x) | 
|  | for i := x; i < 3; i++ { | 
|  | x := i * i | 
|  | y += id(x) //gdb-dbg=(x,y)//gdb-opt=(x,y) | 
|  | } | 
|  | y = x + y //gdb-dbg=(x,y)//gdb-opt=(x,y) | 
|  | fmt.Println(x, y) | 
|  |  | 
|  | for x := 0; x <= 1; x++ { // From delve scopetest.go | 
|  | a := y | 
|  | f1(a) | 
|  | { | 
|  | b := 0 | 
|  | f2(b) | 
|  | if gretbool() { | 
|  | c := 0 | 
|  | f3(c) | 
|  | } else { | 
|  | c := 1.1 | 
|  | f4(int(c)) | 
|  | } | 
|  | f5(b) | 
|  | } | 
|  | f6(a) | 
|  | } | 
|  |  | 
|  | { // From delve testnextprog.go | 
|  | var ( | 
|  | j = id(1) | 
|  | f = id(2) | 
|  | ) | 
|  | for i := 0; i <= 5; i++ { | 
|  | j += j * (j ^ 3) / 100 | 
|  | if i == f { | 
|  | fmt.Println("foo") | 
|  | break | 
|  | } | 
|  | sleepytime() | 
|  | } | 
|  | helloworld() | 
|  | } | 
|  | } | 
|  |  | 
|  | func sleepytime() { | 
|  | time.Sleep(5 * time.Millisecond) | 
|  | } | 
|  |  | 
|  | func helloworld() { | 
|  | fmt.Println("Hello, World!") | 
|  | } | 
|  |  | 
|  | //go:noinline | 
|  | func f1(x int) {} | 
|  |  | 
|  | //go:noinline | 
|  | func f2(x int) {} | 
|  |  | 
|  | //go:noinline | 
|  | func f3(x int) {} | 
|  |  | 
|  | //go:noinline | 
|  | func f4(x int) {} | 
|  |  | 
|  | //go:noinline | 
|  | func f5(x int) {} | 
|  |  | 
|  | //go:noinline | 
|  | func f6(x int) {} | 
|  |  | 
|  | var boolvar = true | 
|  |  | 
|  | func gretbool() bool { | 
|  | x := boolvar | 
|  | boolvar = !boolvar | 
|  | return x | 
|  | } | 
|  |  | 
|  | var sink string | 
|  |  | 
|  | //go:noinline | 
|  | func growstack() { | 
|  | sink = fmt.Sprintf("%#v,%#v,%#v", 1, true, "cat") | 
|  | } |