} else {
if t.Recv() != nil {
b.WriteString("method")
- tconv2(b, t.recvsTuple(), 0, mode, visited)
+ formatParams(b, t.Recvs(), mode, visited)
b.WriteByte(' ')
}
b.WriteString("func")
}
- tconv2(b, t.paramsTuple(), 0, mode, visited)
+ formatParams(b, t.Params(), mode, visited)
switch t.NumResults() {
case 0:
default:
b.WriteByte(' ')
- tconv2(b, t.ResultsTuple(), 0, mode, visited)
+ formatParams(b, t.Results(), mode, visited)
}
case TSTRUCT:
break
}
- if t.StructType().ParamTuple {
- b.WriteByte('(')
- fieldVerb := 'v'
- switch mode {
- case fmtTypeID, fmtTypeIDName, fmtGo:
- // no argument names on function signature, and no "noescape"/"nosplit" tags
- fieldVerb = 'S'
- }
- for i, f := range t.Fields() {
- if i != 0 {
- b.WriteString(", ")
- }
- fldconv(b, f, fieldVerb, mode, visited, true)
- }
- b.WriteByte(')')
- } else {
- b.WriteString("struct {")
- for i, f := range t.Fields() {
- if i != 0 {
- b.WriteByte(';')
- }
- b.WriteByte(' ')
- fldconv(b, f, 'L', mode, visited, false)
- }
- if t.NumFields() != 0 {
- b.WriteByte(' ')
+ b.WriteString("struct {")
+ for i, f := range t.Fields() {
+ if i != 0 {
+ b.WriteByte(';')
}
- b.WriteByte('}')
+ b.WriteByte(' ')
+ fldconv(b, f, 'L', mode, visited, false)
}
+ if t.NumFields() != 0 {
+ b.WriteByte(' ')
+ }
+ b.WriteByte('}')
case TFORW:
b.WriteString("undefined")
}
}
+func formatParams(b *bytes.Buffer, params []*Field, mode fmtMode, visited map[*Type]int) {
+ b.WriteByte('(')
+ fieldVerb := 'v'
+ switch mode {
+ case fmtTypeID, fmtTypeIDName, fmtGo:
+ // no argument names on function signature, and no "noescape"/"nosplit" tags
+ fieldVerb = 'S'
+ }
+ for i, param := range params {
+ if i != 0 {
+ b.WriteString(", ")
+ }
+ fldconv(b, param, fieldVerb, mode, visited, true)
+ }
+ b.WriteByte(')')
+}
+
func fldconv(b *bytes.Buffer, f *Field, verb rune, mode fmtMode, visited map[*Type]int, isParam bool) {
if f == nil {
b.WriteString("<T>")