ast: fix ParExpr.str(), RangeExpr.str(), SizeOf.str() (#6023)

pull/6031/head
Nick Treleaven 2020-07-31 01:31:01 +01:00 committed by GitHub
parent 1fd499ed4a
commit eb47ce1e83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View File

@ -215,14 +215,23 @@ pub fn (x Expr) str() string {
return '${it.left.str()} $it.op.str() ${it.right.str()}'
}
ParExpr {
return it.expr.str()
return '($it.expr)'
}
PrefixExpr {
return it.op.str() + it.right.str()
}
RangeExpr {
mut s := '..'
if it.has_low {s = '$it.low ' + s}
if it.has_high {s = s + ' $it.high'}
return s
}
SelectorExpr {
return '${it.expr.str()}.${it.field_name}'
}
SizeOf {
return 'sizeof($it.expr)'
}
StringInterLiteral {
mut res := []string{}
res << "'"
@ -257,11 +266,10 @@ pub fn (x Expr) str() string {
UnsafeExpr {
return 'unsafe { $it.stmts.len stmts }'
}
else {
else {}
}
return '[unhandled expr type ${typeof(x)}]'
}
}
}
pub fn (a CallArg) str() string {
if a.is_mut {

View File

@ -903,7 +903,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
ast.OrExpr {
// shouldn't happen, an or expression
// is always linked to a call expr
panic('fmt: OrExpr should to linked to CallExpr')
panic('fmt: OrExpr should be linked to CallExpr')
}
ast.ParExpr {
f.write('(')