| // 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 1. | |
| // Does not compile. | |
| package main | |
| var x int | |
| func f() { | |
| L1: // ERROR "label .*L1.* defined and not used" | |
| for { | |
| } | |
| L2: // ERROR "label .*L2.* defined and not used" | |
| select {} | |
| L3: // ERROR "label .*L3.* defined and not used" | |
| switch { | |
| } | |
| L4: // ERROR "label .*L4.* defined and not used" | |
| if true { | |
| } | |
| L5: // ERROR "label .*L5.* defined and not used" | |
| f() | |
| L6: // GCCGO_ERROR "previous" | |
| f() | |
| L6: // ERROR "label .*L6.* already defined" | |
| f() | |
| if x == 20 { | |
| goto L6 | |
| } | |
| L7: | |
| for { | |
| break L7 | |
| } | |
| L8: | |
| for { | |
| if x == 21 { | |
| continue L8 | |
| } | |
| } | |
| L9: | |
| switch { | |
| case true: | |
| break L9 | |
| defalt: // ERROR "label .*defalt.* defined and not used" | |
| } | |
| L10: | |
| select { | |
| default: | |
| break L10 | |
| } | |
| goto L10 | |
| goto go2 // ERROR "label go2 not defined|reference to undefined label .*go2" | |
| } |