node: elide parentheses in some cases
This commit is contained in:
parent
334db21fd6
commit
760d1ddbbd
14
node.go
14
node.go
@ -598,7 +598,7 @@ func (this *conversionState) convertNoFreeFloating(n_ node.Node) (string, error)
|
|||||||
return "", parseErr{n, err}
|
return "", parseErr{n, err}
|
||||||
}
|
}
|
||||||
|
|
||||||
args = append(args, exprGo)
|
args = append(args, removeParens(exprGo))
|
||||||
}
|
}
|
||||||
|
|
||||||
this.importPackages["fmt"] = struct{}{}
|
this.importPackages["fmt"] = struct{}{}
|
||||||
@ -1182,6 +1182,16 @@ func constructorName(className string) string {
|
|||||||
return `New` + className
|
return `New` + className
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// removeParens removes surrounding parentheses from an expression.
|
||||||
|
// This is only safe in cases where there is ambiguously a single rvalue wanted,
|
||||||
|
// e.g. between ( and , in a function call argument
|
||||||
|
func removeParens(expr string) string {
|
||||||
|
for len(expr) > 2 && expr[0] == '(' && expr[len(expr)-1] == ')' {
|
||||||
|
expr = expr[1 : len(expr)-1]
|
||||||
|
}
|
||||||
|
return expr
|
||||||
|
}
|
||||||
|
|
||||||
// resolveName turns a `*name.Name` node into a Go string.
|
// resolveName turns a `*name.Name` node into a Go string.
|
||||||
func (this *conversionState) resolveName(n node.Node) (string, error) {
|
func (this *conversionState) resolveName(n node.Node) (string, error) {
|
||||||
// TODO support namespace lookups
|
// TODO support namespace lookups
|
||||||
@ -1346,7 +1356,7 @@ func (this *conversionState) convertFuncCallArgsCommon(args *node.ArgumentList)
|
|||||||
rvalue = "..." + rvalue
|
rvalue = "..." + rvalue
|
||||||
}
|
}
|
||||||
|
|
||||||
callParams = append(callParams, rvalue)
|
callParams = append(callParams, removeParens(rvalue))
|
||||||
}
|
}
|
||||||
|
|
||||||
return "(" + strings.Join(callParams, `, `) + ")", nil // expr only, no semicolon/newline
|
return "(" + strings.Join(callParams, `, `) + ")", nil // expr only, no semicolon/newline
|
||||||
|
Loading…
Reference in New Issue
Block a user