From f1fdc9c52f9f2f823636faba58b6a513bb17470a Mon Sep 17 00:00:00 2001 From: shove Date: Fri, 12 Jan 2024 21:58:00 +0800 Subject: [PATCH] parser, cgen: a minor cleanup (#20502) --- vlib/v/gen/c/cgen.v | 6 ++---- vlib/v/parser/comptime.v | 4 +++- vlib/v/parser/containers.v | 4 +++- vlib/v/parser/fn.v | 4 +++- vlib/v/parser/lock.v | 4 +++- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index b76de4e1ee..90e7c0f79e 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -1451,11 +1451,9 @@ pub fn (mut g Gen) write_typedef_types() { info := sym.info as ast.ArrayFixed elem_sym := g.table.sym(info.elem_type) if elem_sym.is_builtin() { - // .array_fixed { styp := sym.cname - // array_fixed_char_300 => char x[300] - len := styp.after('_') - if len.int() > 0 { + len := info.size + if len > 0 { mut fixed := g.typ(info.elem_type) if elem_sym.info is ast.FnType { pos := g.out.len diff --git a/vlib/v/parser/comptime.v b/vlib/v/parser/comptime.v index 1f984d9100..aeea8dc793 100644 --- a/vlib/v/parser/comptime.v +++ b/vlib/v/parser/comptime.v @@ -322,6 +322,9 @@ fn (mut p Parser) comptime_for() ast.ComptimeFor { for_val := p.check_name() mut kind := ast.ComptimeForKind.methods p.open_scope() + defer { + p.close_scope() + } match for_val { 'methods' { p.scope.register(ast.Var{ @@ -370,7 +373,6 @@ fn (mut p Parser) comptime_for() ast.ComptimeFor { } spos := p.tok.pos() stmts := p.parse_block() - p.close_scope() return ast.ComptimeFor{ val_var: val_var stmts: stmts diff --git a/vlib/v/parser/containers.v b/vlib/v/parser/containers.v index 8e146e4081..8d6a4f7be5 100644 --- a/vlib/v/parser/containers.v +++ b/vlib/v/parser/containers.v @@ -242,6 +242,9 @@ fn (mut p Parser) scope_register_index() { fn (mut p Parser) handle_index_variable(mut default_expr ast.Expr) bool { mut has_index := false p.open_scope() + defer { + p.close_scope() + } p.scope_register_index() default_expr = p.expr(0) if var := p.scope.find_var('index') { @@ -261,6 +264,5 @@ fn (mut p Parser) handle_index_variable(mut default_expr ast.Expr) bool { has_index = is_used } } - p.close_scope() return has_index } diff --git a/vlib/v/parser/fn.v b/vlib/v/parser/fn.v index 24aeb6f3dd..eb7e3da521 100644 --- a/vlib/v/parser/fn.v +++ b/vlib/v/parser/fn.v @@ -249,6 +249,9 @@ fn (mut p Parser) fn_decl() ast.FnDecl { p.check(.key_fn) comments << p.eat_comments() p.open_scope() + defer { + p.close_scope() + } language_tok_pos := p.tok.pos() mut language := p.parse_language() p.fn_language = language @@ -645,7 +648,6 @@ run them via `v file.v` instead', p.table.register_fn_generic_types(fn_decl.fkey()) } p.label_names = [] - p.close_scope() return fn_decl } diff --git a/vlib/v/parser/lock.v b/vlib/v/parser/lock.v index f6a1983af5..b774b9e635 100644 --- a/vlib/v/parser/lock.v +++ b/vlib/v/parser/lock.v @@ -63,6 +63,9 @@ fn (mut p Parser) lock_expr() ast.LockExpr { // TODO Handle aliasing sync p.register_auto_import('sync') p.open_scope() + defer { + p.close_scope() + } mut pos := p.tok.pos() mut lockeds := []ast.Expr{} mut is_rlocked := []bool{} @@ -95,7 +98,6 @@ fn (mut p Parser) lock_expr() ast.LockExpr { } stmts := p.parse_block_no_scope(false) scope := p.scope - p.close_scope() pos.update_last_line(p.prev_tok.line_nr) return ast.LockExpr{ lockeds: lockeds