aboutsummaryrefslogtreecommitdiff
path: root/test/literal2.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2019-02-14 17:34:29 -0800
committerRobert Griesemer <gri@golang.org>2019-02-19 22:45:09 +0000
commit4ad5537bfa47a3cb55bb8194c3b6fa46de938fed (patch)
tree5986cf674d69c2c1d872226d857fa7082fdaaba7 /test/literal2.go
parentc3b49186a6781de58a07bc49ae289354ae98e3be (diff)
downloadgo-4ad5537bfa47a3cb55bb8194c3b6fa46de938fed.tar.gz
go-4ad5537bfa47a3cb55bb8194c3b6fa46de938fed.zip
cmd/compile: accept 'i' suffix orthogonally on all numbers
This change accepts the 'i' suffix on binary and octal integer literals as well as hexadecimal floats. The suffix was already accepted on decimal integers and floats. Note that 0123i == 123i for backward-compatibility (and 09i is valid). See also the respective language in the spec change: https://golang.org/cl/161098 Change-Id: I9d2d755cba36a3fa7b9e24308c73754d4568daaf Reviewed-on: https://go-review.googlesource.com/c/162878 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'test/literal2.go')
-rw-r--r--test/literal2.go38
1 files changed, 20 insertions, 18 deletions
diff --git a/test/literal2.go b/test/literal2.go
index dbe22a012e..f552e33ada 100644
--- a/test/literal2.go
+++ b/test/literal2.go
@@ -5,7 +5,8 @@
// license that can be found in the LICENSE file.
// Test Go2 literal syntax for basic types.
-// TODO add more tests
+// Avoid running gofmt on this file to preserve the
+// test cases with upper-case prefixes (0B, 0O, 0X).
package main
@@ -17,7 +18,7 @@ func assert(cond bool) {
}
}
-func equal(x, y float64) bool {
+func equal(x, y interface{}) bool {
if x != y {
fmt.Printf("%g != %g\n", x, y)
return false
@@ -30,24 +31,30 @@ func main() {
assert(0_1 == 01)
assert(012 == 012)
assert(0_1_2 == 012)
+ assert(0_1_2i == complex(0, 12)) // decimal digits despite leading 0 for backward-compatibility
+ assert(00089i == complex(0, 89)) // decimal digits despite leading 0 for backward-compatibility
// decimals
assert(1_000_000 == 1000000)
+ assert(1_000i == complex(0, 1000))
// hexadecimals
assert(0x_1 == 0x1)
assert(0x1_2 == 0x12)
- assert(0X_cafe_f00d == 0xcafef00d)
+ assert(0x_cafe_f00d == 0xcafef00d)
+ assert(0x_cafei == complex(0, 0xcafe))
// octals
assert(0o_1 == 01)
assert(0o12 == 012)
- assert(0O_1_2 == 012)
+ assert(0o_1_2 == 012)
+ assert(0o_1_2i == complex(0, 0o12))
// binaries
assert(0b_1 == 1)
assert(0b10 == 2)
assert(0b_1_0 == 2)
+ assert(0b_1_0i == complex(0, 2))
// decimal floats
assert(0. == 0.0)
@@ -55,34 +62,29 @@ func main() {
assert(1_0. == 10.0)
assert(.0_1 == 0.01)
assert(1_0.0_1 == 10.01)
+ assert(1_0.0_1i == complex(0, 10.01))
assert(0.e1_0 == 0.0e10)
assert(.0e1_0 == 0.0e10)
assert(1_0.e1_0 == 10.0e10)
assert(.0_1e1_0 == 0.01e10)
assert(1_0.0_1e1_0 == 10.01e10)
+ assert(1_0.0_1e1_0i == complex(0, 10.01e10))
// hexadecimal floats
assert(equal(0x1p-2, 0.25))
assert(equal(0x2.p10, 2048.0))
assert(equal(0x1.Fp+0, 1.9375))
- assert(equal(0X.8p-0, 0.5))
- assert(equal(0X1FFFP-16, 0.1249847412109375))
+ assert(equal(0x.8p-0, 0.5))
+ assert(equal(0x1FFFp-16, 0.1249847412109375))
assert(equal(0x1.fffffffffffffp1023, 1.7976931348623157e308))
+ assert(equal(0x1.fffffffffffffp1023i, complex(0, 1.7976931348623157e308)))
assert(equal(0x_1p-2, 0.25))
assert(equal(0x2.p1_0, 2048.0))
assert(equal(0x1_0.Fp+0, 16.9375))
- assert(equal(0X_0.8p-0, 0.5))
- assert(equal(0X_1FF_FP-16, 0.1249847412109375))
- assert(equal(0x1.f_ffff_ffff_ffffP1_023, 1.7976931348623157e308))
-
- // imaginaries
- assert(0i == complex(0, 0))
- assert(09i == complex(0, 9)) // "09i" is a decimal int followed by "i"
- assert(1.2e+3i == complex(0, 1.2e+3))
-
- assert(0_0i == complex(0, 0))
- assert(0_9i == complex(0, 9)) // "0_9i" is a decimal int followed by "i"
- assert(1.2_0e+0_3i == complex(0, 1.2e+3))
+ assert(equal(0x_0.8p-0, 0.5))
+ assert(equal(0x_1FF_Fp-16, 0.1249847412109375))
+ assert(equal(0x1.f_ffff_ffff_ffffp1_023, 1.7976931348623157e308))
+ assert(equal(0x1.f_ffff_ffff_ffffp1_023i, complex(0, 1.7976931348623157e308)))
}