]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/goto.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / goto.go
index 11417f86b79b0d5981f06a9b3e55a56b3fd2f6d4..d660c9ce624aaa69c3e355940c9e891b4643c561 100644 (file)
@@ -1,9 +1,12 @@
 // 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.
 
+// Verify goto semantics.
+// Does not compile.
+//
 // Each test is in a separate function just so that if the
 // compiler stops processing after one error, we don't
 // lose other ones.
@@ -37,7 +40,7 @@ L:
 // goto across declaration not okay
 func _() {
        goto L // ERROR "goto L jumps over declaration of x at LINE+1|goto jumps over declaration"
-       x := 1  // GCCGO_ERROR "defined here"
+       x := 1 // GCCGO_ERROR "defined here"
        _ = x
 L:
 }
@@ -59,7 +62,7 @@ func _() {
                x := 1
                _ = x
        }
-       x := 1  // GCCGO_ERROR "defined here"
+       x := 1 // GCCGO_ERROR "defined here"
        _ = x
 L:
 }
@@ -74,8 +77,8 @@ L:
 
 // error shows first offending variable
 func _() {
-       goto L // ERROR "goto L jumps over declaration of x at LINE+1|goto jumps over declaration"
-       x := 1  // GCCGO_ERROR "defined here"
+       goto L // ERROR "goto L jumps over declaration of y at LINE+3|goto jumps over declaration"
+       x := 1 // GCCGO_ERROR "defined here"
        _ = x
        y := 1
        _ = y
@@ -84,8 +87,8 @@ L:
 
 // goto not okay even if code path is dead
 func _() {
-       goto L // ERROR "goto L jumps over declaration of x at LINE+1|goto jumps over declaration"
-       x := 1  // GCCGO_ERROR "defined here"
+       goto L // ERROR "goto L jumps over declaration of y at LINE+3|goto jumps over declaration"
+       x := 1 // GCCGO_ERROR "defined here"
        _ = x
        y := 1
        _ = y
@@ -112,14 +115,14 @@ L:
 // goto into inner block not okay
 func _() {
        goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
-       {       // GCCGO_ERROR "block starts here"
+       {      // GCCGO_ERROR "block starts here"
        L:
        }
 }
 
 // goto backward into inner block still not okay
 func _() {
-       {       // GCCGO_ERROR "block starts here"
+       { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
@@ -127,10 +130,10 @@ func _() {
 
 // error shows first (outermost) offending block
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       goto L // ERROR "goto L jumps into block starting at LINE+3|goto jumps into block"
        {
                {
-                       {       // GCCGO_ERROR "block starts here"
+                       { // GCCGO_ERROR "block starts here"
                        L:
                        }
                }
@@ -142,7 +145,7 @@ func _() {
        goto L // ERROR "goto L jumps into block starting at LINE+3|goto jumps into block"
        x := 1
        _ = x
-       {       // GCCGO_ERROR "block starts here"
+       { // GCCGO_ERROR "block starts here"
        L:
        }
 }
@@ -176,30 +179,30 @@ L:
 }
 
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
-       if true {       // GCCGO_ERROR "block starts here"
+       goto L    // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       if true { // GCCGO_ERROR "block starts here"
        L:
        }
 }
 
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
-       if true {       // GCCGO_ERROR "block starts here"
+       goto L    // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       if true { // GCCGO_ERROR "block starts here"
        L:
        } else {
        }
 }
 
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       goto L // ERROR "goto L jumps into block starting at LINE+2|goto jumps into block"
        if true {
-       } else {        // GCCGO_ERROR "block starts here"
+       } else { // GCCGO_ERROR "block starts here"
        L:
        }
 }
 
 func _() {
-       if false {      // GCCGO_ERROR "block starts here"
+       if false { // GCCGO_ERROR "block starts here"
        L:
        } else {
                goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
@@ -209,7 +212,7 @@ func _() {
 func _() {
        if true {
                goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
-       } else {        // GCCGO_ERROR "block starts here"
+       } else { // GCCGO_ERROR "block starts here"
        L:
        }
 }
@@ -217,7 +220,7 @@ func _() {
 func _() {
        if true {
                goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
-       } else if false {       // GCCGO_ERROR "block starts here"
+       } else if false { // GCCGO_ERROR "block starts here"
        L:
        }
 }
@@ -225,7 +228,7 @@ func _() {
 func _() {
        if true {
                goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
-       } else if false {       // GCCGO_ERROR "block starts here"
+       } else if false { // GCCGO_ERROR "block starts here"
        L:
        } else {
        }
@@ -238,9 +241,9 @@ func _() {
        // really is LINE+1 (like in the previous test),
        // even though it looks like it might be LINE+3 instead.
        if true {
-               goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+               goto L // ERROR "goto L jumps into block starting at LINE+2|goto jumps into block"
        } else if false {
-       } else {        // GCCGO_ERROR "block starts here"
+       } else { // GCCGO_ERROR "block starts here"
        L:
        }
 }
@@ -284,14 +287,14 @@ func _() {
 }
 
 func _() {
-       for {   // GCCGO_ERROR "block starts here"
+       for { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
 }
 
 func _() {
-       for {   // GCCGO_ERROR "block starts here"
+       for { // GCCGO_ERROR "block starts here"
                goto L
        L1:
        }
@@ -300,42 +303,42 @@ L:
 }
 
 func _() {
-       for i < n {     // GCCGO_ERROR "block starts here"
+       for i < n { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
 }
 
 func _() {
-       for i = 0; i < n; i++ { // GCCGO_ERROR "block starts here"
+       for i = 0; i < n; i++ { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
 }
 
 func _() {
-       for i = range x {       // GCCGO_ERROR "block starts here"
+       for i = range x { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
 }
 
 func _() {
-       for i = range c {       // GCCGO_ERROR "block starts here"
+       for i = range c { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
 }
 
 func _() {
-       for i = range m {       // GCCGO_ERROR "block starts here"
+       for i = range m { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
 }
 
 func _() {
-       for i = range s {       // GCCGO_ERROR "block starts here"
+       for i = range s { // GCCGO_ERROR "block starts here"
        L:
        }
        goto L // ERROR "goto L jumps into block starting at LINE-3|goto jumps into block"
@@ -392,29 +395,29 @@ func _() {
 }
 
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       goto L // ERROR "goto L jumps into block starting at LINE+2|goto jumps into block"
        switch i {
        case 0:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
        }
 }
 
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       goto L // ERROR "goto L jumps into block starting at LINE+2|goto jumps into block"
        switch i {
        case 0:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
                ;
        default:
        }
 }
 
 func _() {
-       goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
+       goto L // ERROR "goto L jumps into block starting at LINE+3|goto jumps into block"
        switch i {
        case 0:
        default:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
        }
 }
 
@@ -423,14 +426,14 @@ func _() {
        default:
                goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
        case 0:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
        }
 }
 
 func _() {
        switch i {
        case 0:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
                ;
        default:
                goto L // ERROR "goto L jumps into block starting at LINE-4|goto jumps into block"
@@ -492,7 +495,7 @@ func _() {
        goto L // ERROR "goto L jumps into block starting at LINE+2|goto jumps into block"
        select {
        case c <- 1:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
        }
 }
 
@@ -500,7 +503,7 @@ func _() {
        goto L // ERROR "goto L jumps into block starting at LINE+2|goto jumps into block"
        select {
        case c <- 1:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
                ;
        default:
        }
@@ -511,7 +514,7 @@ func _() {
        select {
        case <-c:
        default:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
        }
 }
 
@@ -520,14 +523,14 @@ func _() {
        default:
                goto L // ERROR "goto L jumps into block starting at LINE+1|goto jumps into block"
        case <-c:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
        }
 }
 
 func _() {
        select {
        case <-c:
-       L:      // GCCGO_ERROR "block starts here"
+       L: // GCCGO_ERROR "block starts here"
                ;
        default:
                goto L // ERROR "goto L jumps into block starting at LINE-4|goto jumps into block"