mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: suppress export of Note field within exported bodies
Added a format option to inhibit output of .Note field in printing, and enabled that option during export. Added test. Fixes #13777. Change-Id: I739f9785eb040f2fecbeb96d5a9ceb8c1ca0f772 Reviewed-on: https://go-review.googlesource.com/18217 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: David Chase <drchase@google.com>
This commit is contained in:
parent
d731315cdb
commit
ab5d2bf92f
6 changed files with 59 additions and 10 deletions
|
|
@ -63,6 +63,8 @@ var fmtmode int = FErr
|
|||
|
||||
var fmtpkgpfx int // %uT stickyness
|
||||
|
||||
var fmtbody bool
|
||||
|
||||
//
|
||||
// E.g. for %S: %+S %#S %-S print an identifier properly qualified for debug/export/internal mode.
|
||||
//
|
||||
|
|
@ -87,8 +89,9 @@ var fmtpkgpfx int // %uT stickyness
|
|||
// %-uT type identifiers with package name instead of prefix (typesym, dcommontype, typehash)
|
||||
//
|
||||
|
||||
func setfmode(flags *int) int {
|
||||
fm := fmtmode
|
||||
func setfmode(flags *int) (fm int, fb bool) {
|
||||
fm = fmtmode
|
||||
fb = fmtbody
|
||||
if *flags&obj.FmtSign != 0 {
|
||||
fmtmode = FDbg
|
||||
} else if *flags&obj.FmtSharp != 0 {
|
||||
|
|
@ -97,8 +100,12 @@ func setfmode(flags *int) int {
|
|||
fmtmode = FTypeId
|
||||
}
|
||||
|
||||
*flags &^= (obj.FmtSharp | obj.FmtLeft | obj.FmtSign)
|
||||
return fm
|
||||
if *flags&obj.FmtBody != 0 {
|
||||
fmtbody = true
|
||||
}
|
||||
|
||||
*flags &^= (obj.FmtSharp | obj.FmtLeft | obj.FmtSign | obj.FmtBody)
|
||||
return
|
||||
}
|
||||
|
||||
// Fmt "%L": Linenumbers
|
||||
|
|
@ -741,7 +748,7 @@ func typefmt(t *Type, flag int) string {
|
|||
if name != "" {
|
||||
str = name + " " + typ
|
||||
}
|
||||
if flag&obj.FmtShort == 0 && t.Note != nil {
|
||||
if flag&obj.FmtShort == 0 && !fmtbody && t.Note != nil {
|
||||
str += " " + strconv.Quote(*t.Note)
|
||||
}
|
||||
return str
|
||||
|
|
@ -1599,10 +1606,11 @@ func Sconv(s *Sym, flag int) string {
|
|||
}
|
||||
|
||||
sf := flag
|
||||
sm := setfmode(&flag)
|
||||
sm, sb := setfmode(&flag)
|
||||
str := symfmt(s, flag)
|
||||
flag = sf
|
||||
fmtmode = sm
|
||||
fmtbody = sb
|
||||
return str
|
||||
}
|
||||
|
||||
|
|
@ -1625,7 +1633,7 @@ func Tconv(t *Type, flag int) string {
|
|||
|
||||
t.Trecur++
|
||||
sf := flag
|
||||
sm := setfmode(&flag)
|
||||
sm, sb := setfmode(&flag)
|
||||
|
||||
if fmtmode == FTypeId && (sf&obj.FmtUnsigned != 0) {
|
||||
fmtpkgpfx++
|
||||
|
|
@ -1641,6 +1649,7 @@ func Tconv(t *Type, flag int) string {
|
|||
}
|
||||
|
||||
flag = sf
|
||||
fmtbody = sb
|
||||
fmtmode = sm
|
||||
t.Trecur--
|
||||
return str
|
||||
|
|
@ -1658,7 +1667,7 @@ func Nconv(n *Node, flag int) string {
|
|||
return "<N>"
|
||||
}
|
||||
sf := flag
|
||||
sm := setfmode(&flag)
|
||||
sm, sb := setfmode(&flag)
|
||||
|
||||
var str string
|
||||
switch fmtmode {
|
||||
|
|
@ -1675,6 +1684,7 @@ func Nconv(n *Node, flag int) string {
|
|||
}
|
||||
|
||||
flag = sf
|
||||
fmtbody = sb
|
||||
fmtmode = sm
|
||||
return str
|
||||
}
|
||||
|
|
@ -1691,7 +1701,7 @@ func Hconv(l *NodeList, flag int) string {
|
|||
}
|
||||
|
||||
sf := flag
|
||||
sm := setfmode(&flag)
|
||||
sm, sb := setfmode(&flag)
|
||||
sep := "; "
|
||||
if fmtmode == FDbg {
|
||||
sep = "\n"
|
||||
|
|
@ -1708,6 +1718,7 @@ func Hconv(l *NodeList, flag int) string {
|
|||
}
|
||||
|
||||
flag = sf
|
||||
fmtbody = sb
|
||||
fmtmode = sm
|
||||
return buf.String()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue