}
// NOTE: The space after %#S here is necessary for ld's export data parser.
- exportf("\tfunc %v %v { %v }\n", Sconv(s, obj.FmtSharp), Tconv(t, obj.FmtShort|obj.FmtSharp), Hconv(n.Func.Inl, obj.FmtSharp))
+ exportf("\tfunc %v %v { %v }\n", Sconv(s, obj.FmtSharp), Tconv(t, obj.FmtShort|obj.FmtSharp), Hconv(n.Func.Inl, obj.FmtSharp|obj.FmtBody))
reexportdeplist(n.Func.Inl)
} else {
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.
//
// %-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 {
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
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
}
sf := flag
- sm := setfmode(&flag)
+ sm, sb := setfmode(&flag)
str := symfmt(s, flag)
flag = sf
fmtmode = sm
+ fmtbody = sb
return str
}
t.Trecur++
sf := flag
- sm := setfmode(&flag)
+ sm, sb := setfmode(&flag)
if fmtmode == FTypeId && (sf&obj.FmtUnsigned != 0) {
fmtpkgpfx++
}
flag = sf
+ fmtbody = sb
fmtmode = sm
t.Trecur--
return str
return "<N>"
}
sf := flag
- sm := setfmode(&flag)
+ sm, sb := setfmode(&flag)
var str string
switch fmtmode {
}
flag = sf
+ fmtbody = sb
fmtmode = sm
return str
}
}
sf := flag
- sm := setfmode(&flag)
+ sm, sb := setfmode(&flag)
sep := "; "
if fmtmode == FDbg {
sep = "\n"
}
flag = sf
+ fmtbody = sb
fmtmode = sm
return buf.String()
}
--- /dev/null
+package burnin
+
+type sendCmdFunc func(string)
+
+func sendCommand(c string) {}
+
+func NewSomething() {
+ // This works...
+ // var sendCmd sendCmdFunc
+ // sendCmd = sendCommand
+
+ // So does this...
+ //sendCmd := sendCmdFunc(sendCommand)
+
+ // This fails...
+ sendCmd := sendCommand
+
+ _ = sendCmd
+}
--- /dev/null
+// rundir
+
+// 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.
+
+package ignored