]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/label1.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / label1.go
index 8a192c2910a479cca48b81198bf452914a3ff7a1..a8eaecbff2fa0a50f0af0dabe807aafee7022825 100644 (file)
@@ -1,16 +1,30 @@
 // errorcheck
 
-// Copyright 2011 The Go Authors.  All rights reserved.
+// 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.
 
-// Pass 2 label errors.
+// 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() {
+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 {
@@ -29,11 +43,17 @@ L2:
                        break L2
                }
                if x == 1 {
-                       continue L2 // ERROR "invalid continue label .*L2"
+                       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:
@@ -41,7 +61,7 @@ L3:
                        break L3
                }
                if x == 12 {
-                       continue L3 // ERROR "invalid continue label .*L3"
+                       continue L3 // ERROR "invalid continue label .*L3|continue is not in a loop$"
                }
                goto L3
        }
@@ -52,7 +72,7 @@ L4:
                        break L4 // ERROR "invalid break label .*L4"
                }
                if x == 14 {
-                       continue L4 // ERROR "invalid continue label .*L4"
+                       continue L4 // ERROR "invalid continue label .*L4|continue is not in a loop$"
                }
                if x == 15 {
                        goto L4
@@ -60,12 +80,12 @@ L4:
        }
 
 L5:
-       f()
+       f2()
        if x == 16 {
                break L5 // ERROR "invalid break label .*L5"
        }
        if x == 17 {
-               continue L5 // ERROR "invalid continue label .*L5"
+               continue L5 // ERROR "invalid continue label .*L5|continue is not in a loop$"
        }
        if x == 18 {
                goto L5
@@ -82,4 +102,21 @@ L5:
                        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
+               }
+       }
 }