aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvan Shaw <chickencha@gmail.com>2011-05-27 16:47:26 -0700
committerRobert Griesemer <gri@golang.org>2011-05-27 16:47:26 -0700
commitf369fc09f41bcb9b7bfdfbc21332abe98f89059e (patch)
treeddcc854c3652e7df44f4e6806995603f49b0bf80 /src
parent399a311e64aa7bc5282ce1489a53f1f25c2edeb0 (diff)
downloadgo-f369fc09f41bcb9b7bfdfbc21332abe98f89059e.tar.xz
go/scanner: don't allow "0x" and "0X" as integers
R=gri CC=golang-dev https://golang.org/cl/4560047
Diffstat (limited to 'src')
-rw-r--r--src/pkg/go/scanner/scanner.go4
-rw-r--r--src/pkg/go/scanner/scanner_test.go2
2 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/go/scanner/scanner.go b/src/pkg/go/scanner/scanner.go
index 60ac45c86e..509abeca57 100644
--- a/src/pkg/go/scanner/scanner.go
+++ b/src/pkg/go/scanner/scanner.go
@@ -297,6 +297,10 @@ func (S *Scanner) scanNumber(seenDecimalPoint bool) token.Token {
// hexadecimal int
S.next()
S.scanMantissa(16)
+ if S.offset-offs <= 2 {
+ // only scanned "0x" or "0X"
+ S.error(offs, "illegal hexadecimal number")
+ }
} else {
// octal int or float
seenDecimalDigit := false
diff --git a/src/pkg/go/scanner/scanner_test.go b/src/pkg/go/scanner/scanner_test.go
index 5b99bede11..8af972838d 100644
--- a/src/pkg/go/scanner/scanner_test.go
+++ b/src/pkg/go/scanner/scanner_test.go
@@ -672,6 +672,8 @@ var errors = []struct {
{"078e0", token.FLOAT, 0, ""},
{"078", token.INT, 0, "illegal octal number"},
{"07800000009", token.INT, 0, "illegal octal number"},
+ {"0x", token.INT, 0, "illegal hexadecimal number"},
+ {"0X", token.INT, 0, "illegal hexadecimal number"},
{"\"abc\x00def\"", token.STRING, 4, "illegal character NUL"},
{"\"abc\x80def\"", token.STRING, 4, "illegal UTF-8 encoding"},
}