demangle.go
func (st *state) bareFunctionType(hasReturnType bool) AST {
	if len(st.str) > 0 && st.str[0] == 'J' {
		hasReturnType = true
		st.advance(1)
	}
	var returnType AST
	if hasReturnType {
		returnType = st.demangleType(false)
	}
	types := st.parmlist()
	return &FunctionType{Return: returnType, Args: types}
}
func (st *state) bareFunctionType(hasReturnType bool) AST {
	if len(st.str) > 0 && st.str[0] == 'J' {
		hasReturnType = true
		st.advance(1)
	}
	var returnType AST
	if hasReturnType {
		returnType = st.demangleType(false)
	}
	types := st.parmlist()
	return &FunctionType{Return: returnType, Args: types}
}
func ( st * state ) bareFunctionType ( hasReturnType bool ) AST { if len ( st . str ) > 0 && st . str [ 0 ] == 'J' { hasReturnType = true st . advance ( 1 ) } var returnType AST if hasReturnType { returnType = st . demangleType ( false ) } types := st . parmlist ( ) return & FunctionType { Return : returnType , Args : types } }
// <bare-function-type> ::= [J]<type>+
<bare - function - type > :: = [ J ] <type > +