aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Manghane <cmang@golang.org>2014-12-09 06:52:17 -0800
committerChris Manghane <cmang@golang.org>2015-02-25 19:49:49 +0000
commitc7e1453e3da5ca2550bb780d1cea43e5d05af3ec (patch)
tree0856217c47a05741f67a7f6fdac71f5ebe12959d
parentb59dd94f331677d28250b51729d5bc888fe4cef0 (diff)
downloadgo-c7e1453e3da5ca2550bb780d1cea43e5d05af3ec.tar.xz
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>
-rw-r--r--src/cmd/internal/gc/fmt.go8
-rw-r--r--test/fixedbugs/issue6964.go2
-rw-r--r--test/fixedbugs/issue9076.go15
3 files changed, 20 insertions, 5 deletions
diff --git a/src/cmd/internal/gc/fmt.go b/src/cmd/internal/gc/fmt.go
index ce73676655..5ad607e04e 100644
--- a/src/cmd/internal/gc/fmt.go
+++ b/src/cmd/internal/gc/fmt.go
@@ -1261,14 +1261,14 @@ func exprfmt(n *Node, prec int) string {
return f
case OLITERAL: // this is a bit of a mess
- if fmtmode == FErr && n.Sym != nil {
+ if n.Orig != nil && n.Orig != n {
var f string
- f += fmt.Sprintf("%v", Sconv(n.Sym, 0))
+ f += exprfmt(n.Orig, prec)
return f
}
- if n.Val.Ctype == CTNIL && n.Orig != nil && n.Orig != n {
+ if fmtmode == FErr && n.Sym != nil {
var f string
- f += exprfmt(n.Orig, prec)
+ f += fmt.Sprintf("%v", Sconv(n.Sym, 0))
return f
}
if n.Type != nil && n.Type != Types[n.Type.Etype] && n.Type != idealbool && n.Type != idealstring {
diff --git a/test/fixedbugs/issue6964.go b/test/fixedbugs/issue6964.go
index 821735c082..8f4b60db3c 100644
--- a/test/fixedbugs/issue6964.go
+++ b/test/fixedbugs/issue6964.go
@@ -7,5 +7,5 @@
package main
func main() {
- _ = string(-4 + 2i + 2) // ERROR "-4\+2i"
+ _ = string(-4 + 2i + 2) // ERROR "-4 \+ 2i"
}
diff --git a/test/fixedbugs/issue9076.go b/test/fixedbugs/issue9076.go
new file mode 100644
index 0000000000..ad1cd5db0c
--- /dev/null
+++ b/test/fixedbugs/issue9076.go
@@ -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"