Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / go.test / test / const1.go
index 67f36e4..1580b76 100644 (file)
@@ -1,9 +1,12 @@
-// errchk $G -e $F.go
+// errorcheck
 
 // Copyright 2009 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 overflow is detected when using numeric constants.
+// Does not compile.
+
 package main
 
 type I interface{}
@@ -13,11 +16,11 @@ const (
        Int8   int8  = 101
        Minus1 int8  = -1
        Uint8  uint8 = 102
-       Const  = 103
+       Const        = 103
 
        Float32    float32 = 104.5
        Float64    float64 = 105.5
-       ConstFloat = 106.5
+       ConstFloat         = 106.5
        Big        float64 = 1e300
 
        String = "abc"
@@ -35,32 +38,35 @@ var (
        a8 = Int8 * Const / 100      // ERROR "overflow"
        a9 = Int8 * (Const / 100)    // OK
 
-       b1   = Uint8 * Uint8                                 // ERROR "overflow"
-       b2   = Uint8 * -1                                    // ERROR "overflow"
-       b3   = Uint8 - Uint8                                 // OK
-       b4   = Uint8 - Uint8 - Uint8                         // ERROR "overflow"
-       b5   = uint8(^0)                                     // ERROR "overflow"
-       b6   = ^uint8(0)                                     // OK
-       b7   = uint8(Minus1)                                 // ERROR "overflow"
-       b8   = uint8(int8(-1))                               // ERROR "overflow"
-       b8a  = uint8(-1)                                     // ERROR "overflow"
-       b9   byte                    = (1 << 10) >> 8        // OK
-       b10  byte                    = (1 << 10)             // ERROR "overflow"
-       b11  byte                    = (byte(1) << 10) >> 8  // ERROR "overflow"
-       b12  byte                    = 1000                  // ERROR "overflow"
-       b13  byte                    = byte(1000)            // ERROR "overflow"
-       b14  byte                    = byte(100) * byte(100) // ERROR "overflow"
-       b15  byte                    = byte(100) * 100       // ERROR "overflow"
-       b16  byte                    = byte(0) * 1000        // ERROR "overflow"
-       b16a byte                    = 0 * 1000              // OK
-       b17  byte                    = byte(0) * byte(1000)  // ERROR "overflow"
-       b18  byte                    = Uint8 / 0             // ERROR "division by zero"
+       b1        = Uint8 * Uint8         // ERROR "overflow"
+       b2        = Uint8 * -1            // ERROR "overflow"
+       b3        = Uint8 - Uint8         // OK
+       b4        = Uint8 - Uint8 - Uint8 // ERROR "overflow"
+       b5        = uint8(^0)             // ERROR "overflow"
+       b5a       = int64(^0)             // OK
+       b6        = ^uint8(0)             // OK
+       b6a       = ^int64(0)             // OK
+       b7        = uint8(Minus1)         // ERROR "overflow"
+       b8        = uint8(int8(-1))       // ERROR "overflow"
+       b8a       = uint8(-1)             // ERROR "overflow"
+       b9   byte = (1 << 10) >> 8        // OK
+       b10  byte = (1 << 10)             // ERROR "overflow"
+       b11  byte = (byte(1) << 10) >> 8  // ERROR "overflow"
+       b12  byte = 1000                  // ERROR "overflow"
+       b13  byte = byte(1000)            // ERROR "overflow"
+       b14  byte = byte(100) * byte(100) // ERROR "overflow"
+       b15  byte = byte(100) * 100       // ERROR "overflow"
+       b16  byte = byte(0) * 1000        // ERROR "overflow"
+       b16a byte = 0 * 1000              // OK
+       b17  byte = byte(0) * byte(1000)  // ERROR "overflow"
+       b18  byte = Uint8 / 0             // ERROR "division by zero"
 
-       c1 float64     = Big
-       c2 float64     = Big * Big          // ERROR "overflow"
-       c3 float64     = float64(Big) * Big // ERROR "overflow"
-       c4 = Big * Big                      // ERROR "overflow"
-       c5 = Big / 0                        // ERROR "division by zero"
+       c1 float64 = Big
+       c2 float64 = Big * Big          // ERROR "overflow"
+       c3 float64 = float64(Big) * Big // ERROR "overflow"
+       c4         = Big * Big          // ERROR "overflow"
+       c5         = Big / 0            // ERROR "division by zero"
+       c6         = 1000 % 1e3         // ERROR "floating-point % operation|expected integer type"
 )
 
 func f(int)