]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/gc: do not show computed value in type error
authorChris Manghane <cmang@golang.org>
Tue, 9 Dec 2014 14:52:17 +0000 (06:52 -0800)
committerChris Manghane <cmang@golang.org>
Wed, 25 Feb 2015 19:49:49 +0000 (19:49 +0000)
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>

src/cmd/internal/gc/fmt.go
test/fixedbugs/issue6964.go
test/fixedbugs/issue9076.go [new file with mode: 0644]

index ce7367665585a8ba437b39caa3bbfb6240292398..5ad607e04eb45cf6929f9343d3ded5d9daca6277 100644 (file)
@@ -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 {
index 821735c082bcd901e21277fabd7bebfb286deb8f..8f4b60db3cee28548801017ace2af039db1dabde 100644 (file)
@@ -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 (file)
index 0000000..ad1cd5d
--- /dev/null
@@ -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"