]> Cypherpunks repositories - gostls13.git/commitdiff
test: permit "exponent too large" error
authorIan Lance Taylor <iant@golang.org>
Fri, 18 Dec 2020 21:54:27 +0000 (13:54 -0800)
committerIan Lance Taylor <iant@golang.org>
Fri, 18 Dec 2020 23:47:11 +0000 (23:47 +0000)
The language spec only requires a signed binary exponent of 16 bits
for floating point constants. Permit a "exponent too large" error for
larger exponents.

Don't run test 11326b with gccgo, as it requires successful compilation
of floating point constants with exponents that don't fit in 16 bits.

Change-Id: I98688160c76864aba525a151a14aaaf86bc36a6f
Reviewed-on: https://go-review.googlesource.com/c/go/+/279252
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
test/fixedbugs/issue11326.go
test/fixedbugs/issue11326b.go
test/fixedbugs/issue13471.go

index f3037d53c496fb55c283ec9942dfa6f3243258f1..e0c6a9f0baa3d2a5c97f4240dac783ca310640b6 100644 (file)
@@ -18,11 +18,11 @@ func main() {
 
        // Any implementation must be able to handle these constants at
        // compile time (even though they cannot be assigned to a float64).
-       var _ = 1e646456992  // ERROR "1e\+646456992 overflows float64|floating-point constant overflow"
-       var _ = 1e64645699   // ERROR "1e\+64645699 overflows float64|floating-point constant overflow"
-       var _ = 1e6464569    // ERROR "1e\+6464569 overflows float64|floating-point constant overflow"
-       var _ = 1e646456     // ERROR "1e\+646456 overflows float64|floating-point constant overflow"
-       var _ = 1e64645      // ERROR "1e\+64645 overflows float64|floating-point constant overflow"
+       var _ = 1e646456992  // ERROR "1e\+646456992 overflows float64|floating-point constant overflow|exponent too large"
+       var _ = 1e64645699   // ERROR "1e\+64645699 overflows float64|floating-point constant overflow|exponent too large"
+       var _ = 1e6464569    // ERROR "1e\+6464569 overflows float64|floating-point constant overflow|exponent too large"
+       var _ = 1e646456     // ERROR "1e\+646456 overflows float64|floating-point constant overflow|exponent too large"
+       var _ = 1e64645      // ERROR "1e\+64645 overflows float64|floating-point constant overflow|exponent too large"
        var _ = 1e6464       // ERROR "1e\+6464 overflows float64|floating-point constant overflow"
        var _ = 1e646        // ERROR "1e\+646 overflows float64|floating-point constant overflow"
        var _ = 1e309        // ERROR "1e\+309 overflows float64|floating-point constant overflow"
index 8aba4d91215ffdf1dc8cdd25a692b564d8b13021..b5f933bfea1153c37c28ee3b4c5f897f18b36f06 100644 (file)
@@ -1,5 +1,9 @@
 // run
 
+// Does not work with gccgo, which uses a smaller (but still permitted)
+// exponent size.
+// +build !gccgo
+
 // Copyright 2015 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.
index 9bfc8c3d2cffd62c7cc9d1da6c96754759c45425..9069412ffa6234d14fa96fe75230ea27f783d82a 100644 (file)
@@ -9,17 +9,17 @@
 package main
 
 func main() {
-       const _ int64 = 1e646456992 // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ int32 = 1e64645699  // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ int16 = 1e6464569   // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ int8 = 1e646456     // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ int = 1e64645       // ERROR "integer too large|floating-point constant truncated to integer"
+       const _ int64 = 1e646456992 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ int32 = 1e64645699  // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ int16 = 1e6464569   // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ int8 = 1e646456     // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ int = 1e64645       // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
 
-       const _ uint64 = 1e646456992 // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ uint32 = 1e64645699  // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ uint16 = 1e6464569   // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ uint8 = 1e646456     // ERROR "integer too large|floating-point constant truncated to integer"
-       const _ uint = 1e64645       // ERROR "integer too large|floating-point constant truncated to integer"
+       const _ uint64 = 1e646456992 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ uint32 = 1e64645699  // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ uint16 = 1e6464569   // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ uint8 = 1e646456     // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+       const _ uint = 1e64645       // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
 
-       const _ rune = 1e64645 // ERROR "integer too large|floating-point constant truncated to integer"
+       const _ rune = 1e64645 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
 }