2017-04-07 16:41:45 -06:00
|
|
|
// 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
|
|
|
|
|
2021-07-28 13:59:14 -06:00
|
|
|
func f1() {
|
2017-04-07 16:41:45 -06:00
|
|
|
goto L1
|
|
|
|
const x = 0
|
|
|
|
L1:
|
|
|
|
goto L2
|
|
|
|
type T int
|
|
|
|
L2:
|
|
|
|
}
|
|
|
|
|
2021-07-28 13:59:14 -06:00
|
|
|
func f2() {
|
2017-04-07 16:41:45 -06:00
|
|
|
{
|
|
|
|
goto L1
|
|
|
|
}
|
|
|
|
const x = 0
|
|
|
|
L1:
|
|
|
|
{
|
|
|
|
goto L2
|
|
|
|
}
|
|
|
|
type T int
|
|
|
|
L2:
|
|
|
|
}
|
|
|
|
|
2021-07-28 13:59:14 -06:00
|
|
|
func f3(d int) {
|
2017-04-07 16:41:45 -06:00
|
|
|
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:
|
|
|
|
}
|