mirror of
https://github.com/golang/go.git
synced 2025-11-01 01:00:56 +00:00
In increment and decrement statements, explicit check that the type
of operand is numeric earlier. This avoids a related but less clear
error about converting "1" to be emitted.
So, when compiling
package main
func main() {
var x bool
x++
}
instead of emitting two errors
prog.go:5: cannot convert 1 to type bool
prog.go:5: invalid operation: x++ (non-numeric type bool)
just emits the second error.
Fixes #12525.
Change-Id: I6e81330703765bef0d6eb6c57098c1336af7c799
Reviewed-on: https://go-review.googlesource.com/20245
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
26 lines
495 B
Go
26 lines
495 B
Go
// errorcheck
|
|
|
|
// Copyright 2016 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.
|
|
|
|
// Issue 12525: confusing error trying to increment boolean value
|
|
|
|
package main
|
|
|
|
func main() {
|
|
var i int
|
|
i++
|
|
|
|
var f float64
|
|
f++
|
|
|
|
var c complex128
|
|
c++
|
|
|
|
var b bool
|
|
b++ // ERROR "invalid operation: b\+\+ \(non-numeric type bool\)"
|
|
|
|
var s string
|
|
s-- // ERROR "invalid operation: s-- \(non-numeric type string\)"
|
|
}
|