demangle.go
func (st *state) cloneSuffix(a AST) AST {
	i := 0
	if len(st.str) > 1 && st.str[0] == '.' && (isLower(st.str[1]) || st.str[1] == '_') {
		i += 2
		for len(st.str) > i && (isLower(st.str[i]) || st.str[i] == '_') {
			i++
		}
	}
	for len(st.str) > i+1 && st.str[i] == '.' && isDigit(st.str[i+1]) {
		i += 2
		for len(st.str) > i && isDigit(st.str[i]) {
			i++
		}
	}
	suffix := st.str[:i]
	st.advance(i)
	return &Clone{Base: a, Suffix: suffix}
}
func (st *state) cloneSuffix(a AST) AST {
	i := 0
	if len(st.str) > 1 && st.str[0] == '.' && (isLower(st.str[1]) || st.str[1] == '_') {
		i += 2
		for len(st.str) > i && (isLower(st.str[i]) || st.str[i] == '_') {
			i++
		}
	}
	for len(st.str) > i+1 && st.str[i] == '.' && isDigit(st.str[i+1]) {
		i += 2
		for len(st.str) > i && isDigit(st.str[i]) {
			i++
		}
	}
	suffix := st.str[:i]
	st.advance(i)
	return &Clone{Base: a, Suffix: suffix}
}
func ( st * state ) cloneSuffix ( a AST ) AST { i := 0 if len ( st . str ) > 1 && st . str [ 0 ] == '.' && ( isLower ( st . str [ 1 ] ) || st . str [ 1 ] == '_' ) { i += 2 for len ( st . str ) > i && ( isLower ( st . str [ i ] ) || st . str [ i ] == '_' ) { i ++ } } for len ( st . str ) > i + 1 && st . str [ i ] == '.' && isDigit ( st . str [ i + 1 ] ) { i += 2 for len ( st . str ) > i && isDigit ( st . str [ i ] ) { i ++ } } suffix := st . str [ : i ] st . advance ( i ) return & Clone { Base : a , Suffix : suffix } }
// Recognize a clone suffix.  These are not part of the mangling API,
// but are added by GCC when cloning functions.
Recognize a clone suffix . These are not part of the mangling API but are added by GCC when cloning functions .