mirror of
https://github.com/golang/go
synced 2024-11-23 07:20:06 -07:00
cmd/compile: don't report redundant error for invalid integer literals
Fixes #30722. Change-Id: Ia4c6e37282edc44788cd8af3f6cfa10895a19e4f Reviewed-on: https://go-review.googlesource.com/c/go/+/166519 Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
fbc5acbd70
commit
bea58ef352
@ -283,15 +283,11 @@ func (a *Mpint) SetInt64(c int64) {
|
||||
func (a *Mpint) SetString(as string) {
|
||||
_, ok := a.Val.SetString(as, 0)
|
||||
if !ok {
|
||||
// required syntax is [+-][0[x]]d*
|
||||
// At the moment we lose precise error cause;
|
||||
// the old code distinguished between:
|
||||
// - malformed hex constant
|
||||
// - malformed octal constant
|
||||
// - malformed decimal constant
|
||||
// TODO(gri) use different conversion function
|
||||
yyerror("malformed integer constant: %s", as)
|
||||
a.Val.SetUint64(0)
|
||||
// The lexer checks for correct syntax of the literal
|
||||
// and reports detailed errors. Thus SetString should
|
||||
// never fail (in theory it might run out of memory,
|
||||
// but that wouldn't be reported as an error here).
|
||||
Fatalf("malformed integer constant: %s", as)
|
||||
return
|
||||
}
|
||||
if a.checkOverflow(0) {
|
||||
|
17
test/fixedbugs/issue30722.go
Normal file
17
test/fixedbugs/issue30722.go
Normal file
@ -0,0 +1,17 @@
|
||||
// errorcheck
|
||||
|
||||
// Copyright 2019 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 that we only get one error per invalid integer literal.
|
||||
|
||||
package p
|
||||
|
||||
const (
|
||||
_ = 1_ // ERROR "'_' must separate successive digits"
|
||||
_ = 0b // ERROR "binary literal has no digits"
|
||||
_ = 0o // ERROR "octal literal has no digits"
|
||||
_ = 0x // ERROR "hexadecimal literal has no digits"
|
||||
_ = 0xde__ad // ERROR "'_' must separate successive digits"
|
||||
)
|
Loading…
Reference in New Issue
Block a user