1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

workaround for -g with default optional value

This commit is contained in:
joe-conigliaro 2019-12-15 14:11:02 +11:00 committed by Alexander Medvednikov
parent 54b0097cee
commit be60193588

View File

@ -125,9 +125,20 @@ fn (p mut Parser) gen_handle_option_or_else(_typ, name string, fn_call_ph int) s
last_ph := p.cgen.add_placeholder() last_ph := p.cgen.add_placeholder()
last_typ := p.statements() last_typ := p.statements()
if is_assign && last_typ == typ { if is_assign && last_typ == typ {
expr_line := p.cgen.lines[p.cgen.lines.len-2] // workaround for -g with default optional value
// when p.cgen.line_directives is true an extra
// line is added so we need to account for that
expr_line := if p.cgen.line_directives {
p.cgen.lines[p.cgen.lines.len-3]
} else {
p.cgen.lines[p.cgen.lines.len-2]
}
last_expr := expr_line[last_ph..] last_expr := expr_line[last_ph..]
p.cgen.lines[p.cgen.lines.len-2] = '' p.cgen.lines[p.cgen.lines.len-2] = ''
// same here
if p.cgen.line_directives {
p.cgen.lines[p.cgen.lines.len-3] = ''
}
p.genln('if ($tmp .ok) {') p.genln('if ($tmp .ok) {')
p.genln('$name = *($typ*) $tmp . data;') p.genln('$name = *($typ*) $tmp . data;')
p.genln('} else {') p.genln('} else {')