|  | // 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 f() { | 
|  | 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" | 
|  | } | 
|  | goto L2 | 
|  | } | 
|  |  | 
|  | L3: | 
|  | switch { | 
|  | case x > 10: | 
|  | if x == 11 { | 
|  | break L3 | 
|  | } | 
|  | if x == 12 { | 
|  | continue L3 // ERROR "invalid continue label .*L3" | 
|  | } | 
|  | 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" | 
|  | } | 
|  | if x == 15 { | 
|  | goto L4 | 
|  | } | 
|  | } | 
|  |  | 
|  | L5: | 
|  | f() | 
|  | if x == 16 { | 
|  | break L5 // ERROR "invalid break label .*L5" | 
|  | } | 
|  | if x == 17 { | 
|  | continue L5 // ERROR "invalid continue label .*L5" | 
|  | } | 
|  | 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 | 
|  | } | 
|  | } | 
|  | } |