ast.go
func parenthesize(ps *printState, val AST) {
	paren := false
	switch v := val.(type) {
	case *Name, *InitializerList, *FunctionParam:
	case *Qualified:
		if v.LocalName {
			paren = true
		}
	default:
		paren = true
	}
	if paren {
		ps.writeByte('(')
	}
	ps.print(val)
	if paren {
		ps.writeByte(')')
	}
}
func parenthesize(ps *printState, val AST) {
	paren := false
	switch v := val.(type) {
	case *Name, *InitializerList, *FunctionParam:
	case *Qualified:
		if v.LocalName {
			paren = true
		}
	default:
		paren = true
	}
	if paren {
		ps.writeByte('(')
	}
	ps.print(val)
	if paren {
		ps.writeByte(')')
	}
}
func parenthesize ( ps * printState , val AST ) { paren := false switch v := val . ( type ) { case * Name , * InitializerList , * FunctionParam : case * Qualified : if v . LocalName { paren = true } default : paren = true } if paren { ps . writeByte ( '(' ) } ps . print ( val ) if paren { ps . writeByte ( ')' ) } }
// The parenthesize function prints the string for val, wrapped in
// parentheses if necessary.
The parenthesize function prints the string for val wrapped in parentheses if necessary .