]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/nilcheck.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / nilcheck.go
index 99c3c5fdb6f150033d3eb2013b60cac015990187..e81db6dcb07eb826081342155a0c0b2cc640c4be 100644 (file)
@@ -1,6 +1,6 @@
 // errorcheck -0 -N -d=nil
 
-// Copyright 2013 The Go Authors.  All rights reserved.
+// Copyright 2013 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.
 
@@ -17,7 +17,7 @@ type Struct struct {
 type BigStruct struct {
        X int
        Y float64
-       A [1<<20]int
+       A [1 << 20]int
        Z string
 }
 
@@ -29,86 +29,86 @@ type Empty1 struct {
 }
 
 var (
-       intp *int
-       arrayp *[10]int
-       array0p *[0]int
-       bigarrayp *[1<<26]int
-       structp *Struct
+       intp       *int
+       arrayp     *[10]int
+       array0p    *[0]int
+       bigarrayp  *[1 << 26]int
+       structp    *Struct
        bigstructp *BigStruct
-       emptyp *Empty
-       empty1p *Empty1
+       emptyp     *Empty
+       empty1p    *Empty1
 )
 
 func f1() {
-       _ = *intp // ERROR "nil check"
-       _ = *arrayp // ERROR "nil check"
+       _ = *intp    // ERROR "nil check"
+       _ = *arrayp  // ERROR "nil check"
        _ = *array0p // ERROR "nil check"
        _ = *array0p // ERROR "nil check"
-       _ = *intp // ERROR "nil check"
-       _ = *arrayp // ERROR "nil check"
+       _ = *intp    // ERROR "nil check"
+       _ = *arrayp  // ERROR "nil check"
        _ = *structp // ERROR "nil check"
-       _ = *emptyp // ERROR "nil check"
-       _ = *arrayp // ERROR "nil check"
+       _ = *emptyp  // ERROR "nil check"
+       _ = *arrayp  // ERROR "nil check"
 }
 
 func f2() {
        var (
-               intp *int
-               arrayp *[10]int
-               array0p *[0]int
-               bigarrayp *[1<<20]int
-               structp *Struct
+               intp       *int
+               arrayp     *[10]int
+               array0p    *[0]int
+               bigarrayp  *[1 << 20]int
+               structp    *Struct
                bigstructp *BigStruct
-               emptyp *Empty
-               empty1p *Empty1
+               emptyp     *Empty
+               empty1p    *Empty1
        )
 
-       _ = *intp // ERROR "nil check"
-       _ = *arrayp // ERROR "nil check"
-       _ = *array0p // ERROR "nil check"
-       _ = *array0p // ERROR "nil check"
-       _ = *intp // ERROR "nil check"
-       _ = *arrayp // ERROR "nil check"
-       _ = *structp // ERROR "nil check"
-       _ = *emptyp // ERROR "nil check"
-       _ = *arrayp // ERROR "nil check"
-       _ = *bigarrayp // ERROR "nil check"
+       _ = *intp       // ERROR "nil check"
+       _ = *arrayp     // ERROR "nil check"
+       _ = *array0p    // ERROR "nil check"
+       _ = *array0p    // ERROR "nil check"
+       _ = *intp       // ERROR "nil check"
+       _ = *arrayp     // ERROR "nil check"
+       _ = *structp    // ERROR "nil check"
+       _ = *emptyp     // ERROR "nil check"
+       _ = *arrayp     // ERROR "nil check"
+       _ = *bigarrayp  // ERROR "nil check"
        _ = *bigstructp // ERROR "nil check"
-       _ = *empty1p // ERROR "nil check"
+       _ = *empty1p    // ERROR "nil check"
 }
 
 func fx10k() *[10000]int
-var b bool
 
+var b bool
 
 func f3(x *[10000]int) {
        // Using a huge type and huge offsets so the compiler
        // does not expect the memory hardware to fault.
        _ = x[9999] // ERROR "nil check"
-       
+
        for {
                if x[9999] != 0 { // ERROR "nil check"
                        break
                }
        }
-       
-       x = fx10k() 
+
+       x = fx10k()
        _ = x[9999] // ERROR "nil check"
        if b {
                _ = x[9999] // ERROR "nil check"
        } else {
                _ = x[9999] // ERROR "nil check"
-       }       
+       }
        _ = x[9999] // ERROR "nil check"
 
-       x = fx10k() 
+       x = fx10k()
        if b {
                _ = x[9999] // ERROR "nil check"
        } else {
                _ = x[9999] // ERROR "nil check"
-       }       
+       }
        _ = x[9999] // ERROR "nil check"
-       
+
        fx10k()
        // This one is a bit redundant, if we figured out that
        // x wasn't going to change across the function call.
@@ -138,7 +138,7 @@ func f3b() {
        _ = &x[9] // ERROR "nil check"
 }
 
-func fx10() *[10]int 
+func fx10() *[10]int
 
 func f4(x *[10]int) {
        // Most of these have no checks because a real memory reference follows,
@@ -146,33 +146,33 @@ func f4(x *[10]int) {
        // in the first unmapped page of memory.
 
        _ = x[9] // ERROR "nil check"
-       
+
        for {
                if x[9] != 0 { // ERROR "nil check"
                        break
                }
        }
-       
-       x = fx10() 
+
+       x = fx10()
        _ = x[9] // ERROR "nil check"
        if b {
                _ = x[9] // ERROR "nil check"
        } else {
                _ = x[9] // ERROR "nil check"
-       }       
+       }
        _ = x[9] // ERROR "nil check"
 
-       x = fx10() 
+       x = fx10()
        if b {
                _ = x[9] // ERROR "nil check"
        } else {
                _ = &x[9] // ERROR "nil check"
-       }       
+       }
        _ = x[9] // ERROR "nil check"
-       
+
        fx10()
        _ = x[9] // ERROR "nil check"
-       
+
        x = fx10()
        y := fx10()
        _ = &x[9] // ERROR "nil check"
@@ -184,6 +184,7 @@ func f4(x *[10]int) {
 
 func f5(m map[string]struct{}) bool {
        // Existence-only map lookups should not generate a nil check
-       _, ok := m[""]
+       tmp1, tmp2 := m[""] // ERROR "removed nil check"
+       _, ok := tmp1, tmp2
        return ok
 }