| // compile | |
| // 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. | |
| // Verify that gotos across non-variable declarations | |
| // are accepted. | |
| package p | |
| func f1() { | |
| goto L1 | |
| const x = 0 | |
| L1: | |
| goto L2 | |
| type T int | |
| L2: | |
| } | |
| func f2() { | |
| { | |
| goto L1 | |
| } | |
| const x = 0 | |
| L1: | |
| { | |
| goto L2 | |
| } | |
| type T int | |
| L2: | |
| } | |
| func f3(d int) { | |
| if d > 0 { | |
| goto L1 | |
| } else { | |
| goto L2 | |
| } | |
| const x = 0 | |
| L1: | |
| switch d { | |
| case 1: | |
| goto L3 | |
| case 2: | |
| default: | |
| goto L4 | |
| } | |
| type T1 int | |
| L2: | |
| const y = 1 | |
| L3: | |
| for d > 0 { | |
| if d < 10 { | |
| goto L4 | |
| } | |
| } | |
| type T2 int | |
| L4: | |
| select { | |
| default: | |
| goto L5 | |
| } | |
| type T3 int | |
| L5: | |
| } |