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 {
--- /dev/null
+// 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"