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