|  | // 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" | 
|  | } |