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

Revert "cgen.prepend_to_statement()"

This reverts commit 507c71ad80.
This commit is contained in:
Alexander Medvednikov
2019-12-11 20:37:39 +03:00
parent 507c71ad80
commit 47f9c02331
3 changed files with 15 additions and 27 deletions

View File

@ -1,7 +1,3 @@
// Copyright (c) 2019 Alexander Medvednikov. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.
module compiler
import strings
@ -10,18 +6,26 @@ const (
dot_ptr = '->'
)
/*
fn (p mut Parser) gen_or_else(pos int) string {
}
*/
// returns the type of the new variable
fn (p mut Parser) gen_var_decl(name string, is_static bool) string {
// Generate expression to tmp because we need its type first
// `[typ] [name] = bool_expression();`
pos := p.cgen.add_placeholder()
p.is_var_decl = true
mut typ := p.bool_expression()
//mut typ, expr := p.tmp_expr()
p.is_var_decl = false
if typ.starts_with('...') { typ = typ[3..] }
//p.gen('/*after expr*/')
// Option check ? or {
or_else := p.tok == .key_orelse
if or_else {
return p.gen_handle_option_or_else(typ, name, 0)
return p.gen_handle_option_or_else(typ, name, pos)
}
gen_name := p.table.var_cgen_name(name)
mut nt_gen := p.table.cgen_name_type_pair(gen_name, typ)
@ -31,7 +35,7 @@ fn (p mut Parser) gen_var_decl(name string, is_static bool) string {
} else if typ.starts_with('[') && typ[ typ.len-1 ] != `*` {
// a fixed_array initializer, like `v := [1.1, 2.2]!!`
// ... should translate to the following in C `f32 v[2] = {1.1, 2.2};`
initializer := p.cgen.cur_line
initializer := p.cgen.cur_line[pos..]
if initializer.len > 0 {
p.cgen.resetln(' = {' + initializer.all_after('{') )
} else if initializer.len == 0 {
@ -42,9 +46,7 @@ fn (p mut Parser) gen_var_decl(name string, is_static bool) string {
if is_static {
nt_gen = 'static $nt_gen'
}
// Now that we know the type, prepend it
// `[typ] [name] = bool_expression();`
p.cgen.prepend_to_statement(nt_gen)
p.cgen.set_placeholder(pos, nt_gen)
return typ
}