cmd/internal/gc: do not show original expression for constants in export data

Fixes #10066.

Change-Id: I43c423793dd094989e921e163a06b12181a35719
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/6750
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Chris Manghane <cmang@golang.org>
This commit is contained in:
Shenghou Ma 2015-03-03 23:28:00 -05:00 committed by Minux Ma
parent 1fff4fbebf
commit f09887cdce
4 changed files with 37 additions and 4 deletions

View file

@ -1143,11 +1143,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 {
return exprfmt(n.Orig, prec)
if fmtmode == FErr {
if n.Orig != nil && n.Orig != n {
return exprfmt(n.Orig, prec)
}
if n.Sym != nil {
return fmt.Sprintf("%v", Sconv(n.Sym, 0))
}
}
if fmtmode == FErr && n.Sym != nil {
return fmt.Sprintf("%v", Sconv(n.Sym, 0))
if n.Val.Ctype == CTNIL && n.Orig != nil && n.Orig != n {
return exprfmt(n.Orig, prec)
}
if n.Type != nil && n.Type != Types[n.Type.Etype] && n.Type != idealbool && n.Type != idealstring {
// Need parens when type begins with what might

View file

@ -0,0 +1,11 @@
package a
import "log"
func Do() {
Do2()
}
func Do2() {
println(log.Ldate | log.Ltime | log.Lshortfile)
}

View file

@ -0,0 +1,7 @@
package b
import "./a"
func test() {
a.Do()
}

View file

@ -0,0 +1,10 @@
// compiledir
// Copyright 2015 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 10066: constants are printed in the original form
// in export data. This is the opposite of issue 9076.
package ignored