cmd/internal/gc: do not show computed value in type error

Fixes #9076.

Change-Id: Ib41a452fa9aa9fecf19f65c36d13715923548041
Reviewed-on: https://go-review.googlesource.com/1250
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Chris Manghane <cmang@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Chris Manghane 2014-12-09 06:52:17 -08:00
parent b59dd94f33
commit c7e1453e3d
3 changed files with 21 additions and 6 deletions

View file

@ -1261,16 +1261,16 @@ func exprfmt(n *Node, prec int) string {
return f
case OLITERAL: // this is a bit of a mess
if n.Orig != nil && n.Orig != n {
var f string
f += exprfmt(n.Orig, prec)
return f
}
if fmtmode == FErr && n.Sym != nil {
var f string
f += fmt.Sprintf("%v", Sconv(n.Sym, 0))
return f
}
if n.Val.Ctype == CTNIL && n.Orig != nil && n.Orig != n {
var f string
f += exprfmt(n.Orig, prec)
return f
}
if n.Type != nil && n.Type != Types[n.Type.Etype] && n.Type != idealbool && n.Type != idealstring {
// Need parens when type begins with what might
// be misinterpreted as a unary operator: * or <-.

View file

@ -7,5 +7,5 @@
package main
func main() {
_ = string(-4 + 2i + 2) // ERROR "-4\+2i"
_ = string(-4 + 2i + 2) // ERROR "-4 \+ 2i"
}

View file

@ -0,0 +1,15 @@
// errorcheck
// Copyright 2014 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 9076: cmd/gc shows computed values in error messages instead of original expression.
package main
import "unsafe"
const Hundred = 100
var _ int32 = 100/unsafe.Sizeof(int(0)) + 1 // GC_ERROR "100 \/ unsafe.Sizeof\(int\(0\)\) \+ 1"
var _ int32 = Hundred/unsafe.Sizeof(int(0)) + 1 // GC_ERROR "Hundred \/ unsafe.Sizeof\(int\(0\)\) \+ 1"