blob: 3f3ffcf615151603ab88e360d2612d1d5a2f06d7 [file] [log] [blame]
Russ Cox2b1c9b42012-02-16 23:49:30 -05001// run
Rob Pikeaff8d9b2008-07-15 10:44:02 -07002
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
Ian Lance Taylorf2030932012-01-18 14:31:31 -08009import "fmt"
10
Rob Pikeaff8d9b2008-07-15 10:44:02 -070011func main() {
Ian Lance Taylor6b346282012-01-18 13:20:55 -080012 var i, k int
Ian Lance Taylorf2030932012-01-18 14:31:31 -080013 var r string
Ian Lance Taylor6b346282012-01-18 13:20:55 -080014outer:
15 for k = 0; k < 2; k++ {
Ian Lance Taylorf2030932012-01-18 14:31:31 -080016 r += fmt.Sprintln("outer loop top k", k)
Ian Lance Taylor6b346282012-01-18 13:20:55 -080017 if k != 0 {
18 panic("k not zero")
19 } // inner loop breaks this one every time
20 for i = 0; i < 2; i++ {
21 if i != 0 {
22 panic("i not zero")
23 } // loop breaks every time
Ian Lance Taylorf2030932012-01-18 14:31:31 -080024 r += fmt.Sprintln("inner loop top i", i)
Rob Pikeaff8d9b2008-07-15 10:44:02 -070025 if true {
Ian Lance Taylorf2030932012-01-18 14:31:31 -080026 r += "do break\n"
Ian Lance Taylor6b346282012-01-18 13:20:55 -080027 break outer
Rob Pikeaff8d9b2008-07-15 10:44:02 -070028 }
29 }
30 }
Ian Lance Taylorf2030932012-01-18 14:31:31 -080031 r += "broke\n"
32 expect := `outer loop top k 0
33inner loop top i 0
34do break
35broke
36`
37 if r != expect {
38 panic(r)
39 }
Rob Pikeaff8d9b2008-07-15 10:44:02 -070040}