From 43a123c1ae6613b3efeed291fa552ecd909d3acf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 16 Apr 2024 21:23:18 +0200 Subject: Adding upstream version 1.20.14. Signed-off-by: Daniel Baumann --- test/label1.go | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 test/label1.go (limited to 'test/label1.go') diff --git a/test/label1.go b/test/label1.go new file mode 100644 index 0000000..a8eaecb --- /dev/null +++ b/test/label1.go @@ -0,0 +1,122 @@ +// errorcheck + +// Copyright 2011 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 erroneous labels are caught by the compiler. +// This set is caught by pass 2. That's why this file is label1.go. +// Does not compile. + +package main + +var x int + +func f1() { + switch x { + case 1: + continue // ERROR "continue is not in a loop$|continue statement not within for" + } + select { + default: + continue // ERROR "continue is not in a loop$|continue statement not within for" + } + +} + +func f2() { +L1: + for { + if x == 0 { + break L1 + } + if x == 1 { + continue L1 + } + goto L1 + } + +L2: + select { + default: + if x == 0 { + break L2 + } + if x == 1 { + continue L2 // ERROR "invalid continue label .*L2|continue is not in a loop$" + } + goto L2 + } + + for { + if x == 1 { + continue L2 // ERROR "invalid continue label .*L2" + } + } + +L3: + switch { + case x > 10: + if x == 11 { + break L3 + } + if x == 12 { + continue L3 // ERROR "invalid continue label .*L3|continue is not in a loop$" + } + goto L3 + } + +L4: + if true { + if x == 13 { + break L4 // ERROR "invalid break label .*L4" + } + if x == 14 { + continue L4 // ERROR "invalid continue label .*L4|continue is not in a loop$" + } + if x == 15 { + goto L4 + } + } + +L5: + f2() + if x == 16 { + break L5 // ERROR "invalid break label .*L5" + } + if x == 17 { + continue L5 // ERROR "invalid continue label .*L5|continue is not in a loop$" + } + if x == 18 { + goto L5 + } + + for { + if x == 19 { + break L1 // ERROR "invalid break label .*L1" + } + if x == 20 { + continue L1 // ERROR "invalid continue label .*L1" + } + if x == 21 { + goto L1 + } + } + + continue // ERROR "continue is not in a loop$|continue statement not within for" + for { + continue on // ERROR "continue label not defined: on|invalid continue label .*on" + } + + break // ERROR "break is not in a loop, switch, or select|break statement not within for or switch or select" + for { + break dance // ERROR "break label not defined: dance|invalid break label .*dance" + } + + for { + switch x { + case 1: + continue + } + } +} -- cgit v1.2.3