mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
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:
parent
1fff4fbebf
commit
f09887cdce
4 changed files with 37 additions and 4 deletions
|
@ -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
|
||||
|
|
11
test/fixedbugs/issue10066.dir/a.go
Normal file
11
test/fixedbugs/issue10066.dir/a.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package a
|
||||
|
||||
import "log"
|
||||
|
||||
func Do() {
|
||||
Do2()
|
||||
}
|
||||
|
||||
func Do2() {
|
||||
println(log.Ldate | log.Ltime | log.Lshortfile)
|
||||
}
|
7
test/fixedbugs/issue10066.dir/b.go
Normal file
7
test/fixedbugs/issue10066.dir/b.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package b
|
||||
|
||||
import "./a"
|
||||
|
||||
func test() {
|
||||
a.Do()
|
||||
}
|
10
test/fixedbugs/issue10066.go
Normal file
10
test/fixedbugs/issue10066.go
Normal 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
|
Loading…
Reference in a new issue