in src/go/cmd/token_makers.go [239:352]
func (f Func) MakeTokens() []ReviewToken {
tks := []ReviewToken{}
// prefix with "func" if f isn't embedded in an interface
if !f.embedded {
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindKeyword,
Value: "func",
})
}
if f.ReceiverType != "" {
tks = append(tks, ReviewToken{
Kind: TokenKindText,
Value: "(",
})
tks = append(tks, parseAndMakeTypeTokens(f.ReceiverType)...)
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindPunctuation,
Value: ")",
})
}
tks = append(tks, ReviewToken{
Kind: TokenKindTypeName,
Value: f.name,
})
if len(f.typeParamNames) > 0 {
tks = append(tks, ReviewToken{
Kind: TokenKindPunctuation,
Value: "[",
})
for i, p := range f.typeParamNames {
if i > 0 {
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindPunctuation,
Value: ",",
})
}
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindMemberName,
Value: p,
})
tks = append(tks, parseAndMakeTypeTokens(f.typeParamConstraints[i])...)
}
tks = append(tks, ReviewToken{
Kind: TokenKindPunctuation,
Value: "]",
})
}
paren := "("
if len(f.paramNames) == 0 {
paren += ")"
}
tks = append(tks, ReviewToken{
Kind: TokenKindPunctuation,
Value: paren,
})
for i, p := range f.paramNames {
if p != "" {
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindMemberName,
Value: p,
})
tks = append(tks, parseAndMakeTypeTokens(f.paramTypes[i])...)
} else {
// parameter names are optional
tks = append(tks, parseAndMakeTypeTokens(f.paramTypes[i])...)
}
if i < len(f.paramNames)-1 {
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindPunctuation,
Value: ",",
})
}
}
if len(f.paramNames) > 0 {
tks = append(tks, ReviewToken{
Kind: TokenKindPunctuation,
Value: ")",
})
}
if len(f.Returns) > 0 {
if len(f.Returns) > 1 {
tks = append(tks, ReviewToken{
HasPrefixSpace: true,
Kind: TokenKindPunctuation,
Value: "(",
})
} else {
tks[len(tks)-1].HasSuffixSpace = true
}
for i, t := range f.Returns {
tks = append(tks, parseAndMakeTypeTokens(t)...)
if i < len(f.Returns)-1 {
tks = append(tks, ReviewToken{
HasSuffixSpace: true,
Kind: TokenKindPunctuation,
Value: ",",
})
}
}
if len(f.Returns) > 1 {
tks = append(tks, ReviewToken{
Kind: TokenKindPunctuation,
Value: ")",
})
}
}
return tks
}