From e9931e6f8421322dec42869006bb9634c146a48b Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Fri, 21 Feb 2020 16:14:15 +0100 Subject: [PATCH] fmt: wrap_long_line() --- vlib/compiler/aparser.v | 134 +++++++++++++++++++--------------------- vlib/v/fmt/fmt.v | 18 ++++-- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/vlib/compiler/aparser.v b/vlib/compiler/aparser.v index 2c74b2a314..51bb1c9cfa 100644 --- a/vlib/compiler/aparser.v +++ b/vlib/compiler/aparser.v @@ -8,7 +8,7 @@ import ( strings filepath v.pref - //compiler.x64 + // compiler.x64 time ) @@ -33,7 +33,7 @@ mut: prev_tok2 TokenKind // TODO remove these once the tokens are cached lit string cgen &CGen - //x64 &x64.Gen + // x64 &x64.Gen table &Table import_table ImportTable // Holds imports for just the file being parsed pass Pass @@ -165,23 +165,21 @@ fn (v mut V) new_parser_from_file(path string) Parser { break } } - if v.pref.compile_defines.len > 0 { for cdefine in v.pref.compile_defines { custom_path_ending := '_d_${cdefine}.v' - if path.ends_with(custom_path_ending){ + if path.ends_with(custom_path_ending) { path_platform = custom_path_ending path_pcguard = v.platform_postfix_to_ifdefguard('custom $cdefine') break } } } - mut p := v.new_parser(new_scanner_file(path)) p = { p | file_path:path, - file_path_dir:filepath.dir( path ), + file_path_dir:filepath.dir(path), file_name:path.all_after(filepath.separator), file_platform:path_platform, file_pcguard:path_pcguard, @@ -213,12 +211,12 @@ fn (v mut V) new_parser(scanner &Scanner) Parser { table: v.table cur_fn: EmptyFn cgen: v.cgen - //x64: v.x64 + // x64: v.x64 + pref: v.pref os: v.pref.os vroot: v.pref.vroot - local_vars: [Var{ - }].repeat(MaxLocalVars) + local_vars: [Var{}].repeat(MaxLocalVars) import_table: new_import_table() } $if js { @@ -318,15 +316,16 @@ fn (p &Parser) peek_token() Token { return p.tokens[p.token_idx] } -fn (p &Parser) log(s string) { -} - /* +fn (p &Parser) log(s string) {} + +/* if !p.pref.is_verbose { return } println(s) */ + pub fn (p &Parser) save_state() ParserState { return ParserState{ scanner_file_path: p.scanner.file_path @@ -467,9 +466,8 @@ fn (p mut Parser) parse(pass Pass) { } return } - parsing_start_ticks := time.ticks() - compile_cycles_stuck_mask := u64( 0x1FFFFFFF ) // 2^29-1 cycles + compile_cycles_stuck_mask := u64(0x1FFFFFFF) // 2^29-1 cycles mut parsing_cycle := u64(1) p.prev_stuck_token_idx = p.token_idx // Go through every top level token or throw a compilation error if a non-top level token is met @@ -494,7 +492,8 @@ fn (p mut Parser) parse(pass Pass) { // (for example, by DOOM). such fields are // basically int consts p.enum_decl(true) - } else { + } + else { p.error('Nameless enums are not allowed.') } } @@ -518,7 +517,8 @@ fn (p mut Parser) parse(pass Pass) { } else { p.error('wrong pub keyword usage') - }} + } + } } .key_fn { p.fn_decl() @@ -547,9 +547,7 @@ fn (p mut Parser) parse(pass Pass) { p.comp_time() } .key_global { - if !p.pref.translated && !p.pref.is_live && !p.builtin_mod && !p.pref.building_v && - p.mod != 'ui' && p.mod != 'gg2' && p.mod != 'uiold' && !os.getwd().contains('/volt') && - !p.pref.enable_globals { + if !p.pref.translated && !p.pref.is_live && !p.builtin_mod && !p.pref.building_v && p.mod != 'ui' && p.mod != 'gg2' && p.mod != 'uiold' && !os.getwd().contains('/volt') && !p.pref.enable_globals { p.error('use `v --enable-globals ...` to enable globals') } p.next() @@ -627,7 +625,8 @@ fn (p mut Parser) parse(pass Pass) { else { p.error('unexpected token `${p.strtok()}`') } - }} + } + } } } @@ -755,7 +754,7 @@ fn (p mut Parser) const_decl() { p.table.register_const(name, typ, p.mod, is_pub) } // Check to see if this constant exists, and is void. If so, try and get the type again: - if my_const:=p.v.table.find_const(name){ + if my_const := p.v.table.find_const(name) { if my_const.typ == 'void' { for i, v in p.v.table.consts { if v.name == name { @@ -833,7 +832,7 @@ fn (p mut Parser) type_decl() { name = p.prepend_mod(name) } // Sum type - //is_sum := p.tok == .pipe + // is_sum := p.tok == .pipe if is_sum { // Register the first child (name we already parsed) /* @@ -847,17 +846,18 @@ fn (p mut Parser) type_decl() { // Register the rest of them mut idx := 0 mut done := false - for {//p.tok == .pipe { + for { + // p.tok == .pipe { idx++ - //p.next() + // p.next() child_type_name := p.check_name() - //println('$idx $child_type_name') + // println('$idx $child_type_name') if p.tok != .pipe { done = true } if p.pass == .main { // Update the type's parent - //println('child=$child_type_name parent=$name') + // println('child=$child_type_name parent=$name') mut t := p.find_type(child_type_name) if t.name == '' { p.error('unknown type `$child_type_name`') @@ -872,9 +872,9 @@ fn (p mut Parser) type_decl() { p.fspace() p.check(.pipe) p.fspace() - if p.tokens[p.token_idx - 2].line_nr < p.tokens[p.token_idx - 1].line_nr { + if p.tokens[p.token_idx - 2].line_nr < p.tokens[p.token_idx - 1].line_nr { p.fgenln('\t') - //p.fgen_nl() + // p.fgen_nl() } } if p.pass == .decl { @@ -896,7 +896,6 @@ int typ; ') } else { - parent = p.get_type2() } nt_pair := p.table.cgen_name_type_pair(name, parent.name) @@ -914,12 +913,11 @@ int typ; is_public: is_pub }) } - //if p.tok != .key_type { - p.fgen_nl() - p.fgen_nl() - //} + // if p.tok != .key_type { + p.fgen_nl() + p.fgen_nl() + // } } - // current token is `(` fn (p mut Parser) interface_method(field_name, receiver string) &Fn { mut method := &Fn{ @@ -955,8 +953,8 @@ fn key_to_type_cat(tok TokenKind) TypeCategory { .key_union { return .union_ } - else { - }} + else {} + } verror('Unknown token: $tok') return .builtin } @@ -1096,7 +1094,6 @@ fn (p mut Parser) get_type() string { if is_question { p.check(.question) } - // multiple returns if p.tok == .lpar { // p.warn('`()` are no longer necessary in multiple returns' + @@ -1122,7 +1119,6 @@ fn (p mut Parser) get_type() string { } return typ } - // arrays ([]int) mut arr_level := 0 for p.tok == .lsbr { @@ -1215,7 +1211,7 @@ fn (p mut Parser) get_type() string { if t_suggest.len > 0 { t_suggest = '. did you mean: ($tc_suggest) `$t_suggest`' } - econtext := if p.pref.is_debug { '('+@FILE+':'+@LINE+')' } else {''} + econtext := if p.pref.is_debug { '(' + '/Users/alex/code/v/vlib/compiler/aparser.v' + ':' + '1236' + ')' } else { '' } p.error('unknown type `$typ`$t_suggest $econtext') } } @@ -1308,9 +1304,9 @@ fn (p mut Parser) statements() string { fn (p mut Parser) statements_no_rcbr() string { p.open_scope() - //if !p.inside_if_expr { - // p.genln('') - //} + // if !p.inside_if_expr { + // p.genln('') + // } mut i := 0 mut last_st_typ := '' for p.tok != .rcbr && p.tok != .eof { @@ -1561,13 +1557,13 @@ fn (p mut Parser) statement(add_semi bool) string { else { // An expression as a statement typ := p.expression() - if p.inside_if_expr { - } + if p.inside_if_expr {} else { p.genln('; ') } return typ - }} + } + } // ? : uses , as statement separators if p.inside_if_expr && p.tok != .rcbr { p.gen(', ') @@ -1623,11 +1619,11 @@ fn ($v.name mut $v.typ) ${p.cur_fn.name}(...) { } } .minus_assign { - next := p.peek_token() - if next.tok == .number && next.lit == '1' { - p.error('use `--` instead of `-= 1`') - } - p.gen(' -= ') + next := p.peek_token() + if next.tok == .number && next.lit == '1' { + p.error('use `--` instead of `-= 1`') + } + p.gen(' -= ') } else { p.gen(' ' + p.tok.str() + ' ') @@ -1645,7 +1641,7 @@ fn ($v.name mut $v.typ) ${p.cur_fn.name}(...) { // p.warn('expecting array got $expr_type') // } if expr_type == 'void' { - _,fn_name := p.is_expr_fn_call(expr_tok+1) + _,fn_name := p.is_expr_fn_call(expr_tok + 1) p.error_with_token_index('${fn_name}() $err_used_as_value', expr_tok) } // Allow `num = 4` where `num` is an `?int` @@ -1658,7 +1654,7 @@ fn ($v.name mut $v.typ) ${p.cur_fn.name}(...) { else if expr_type.starts_with('Option_') && p.assigned_type == parse_pointer(expr_type['Option_'.len..]) && p.tok == .key_orelse { line := p.cgen.cur_line vname := line[..pos].replace('=', '') // TODO cgen line hack - if idx:=line.index('='){ + if idx := line.index('=') { p.cgen.resetln(line.replace(line[..idx + 1], '')) p.gen_handle_option_or_else(expr_type, vname, ph) } @@ -1674,12 +1670,12 @@ fn ($v.name mut $v.typ) ${p.cur_fn.name}(...) { } p.cgen.resetln('memcpy( (& $left), ($etype{$expr}), sizeof( $left ) );') } - // check type for +=, -=, *=, /=. + // check type for +=, -=, *=, /=. else if tok in [.plus_assign, .minus_assign, .mult_assign, .div_assign] { // special 1. ptrs with += or -= are acceptable. if !(tok in [.plus_assign, .minus_assign] && (is_integer_type(p.assigned_type) || is_pointer_type(p.assigned_type)) && (is_integer_type(expr_type) || is_pointer_type(expr_type))) { - // special 2. `str += str` is acceptable - if !(tok == .plus_assign && p.assigned_type == expr_type && expr_type == 'string' ) { + // special 2. `str += str` is acceptable + if !(tok == .plus_assign && p.assigned_type == expr_type && expr_type == 'string') { if !is_number_type(p.assigned_type) { p.error_with_token_index('cannot use assignment operator ${tok.str()} on non-numeric type `$p.assigned_type`', errtok) } @@ -1773,7 +1769,7 @@ fn (p mut Parser) var_decl() { p.var_decl_name = if var_names.len > 1 { '_V_mret_${p.token_idx}_' + var_names.join('_') } else { var_names[0] } t := p.gen_var_decl(p.var_decl_name, is_static) if t == 'void' { - _,fn_name := p.is_expr_fn_call(expr_tok+1) + _,fn_name := p.is_expr_fn_call(expr_tok + 1) p.error_with_token_index('${fn_name}() $err_used_as_value', expr_tok) } mut var_types := [t] @@ -2067,9 +2063,8 @@ fn (p mut Parser) var_expr(v Var) string { p.gen(p.tok.str()) p.next() // ++/-- // allow `a := c++` in translated code TODO remove once c2v handles this - if p.pref.translated { - // return p.index_expr(typ, fn_ph) - } + if p.pref.translated {} + // return p.index_expr(typ, fn_ph) else { return typ } @@ -2689,7 +2684,7 @@ fn (p mut Parser) array_init() string { mut i := 0 for p.tok != .rsbr { if expected_array_type.starts_with('array_') { - p.expected_type = expected_array_type[6..] + p.expected_type = expected_array_type[6..] } val_typ := p.bool_expression() // Get the type of the first expression @@ -2898,11 +2893,7 @@ fn (p mut Parser) return_st() { mut cur_fn_typ_chk := p.cur_fn.typ // multiple returns if types.len > 1 { - mr_type := if p.cur_fn.typ.starts_with('Option_') { - p.cur_fn.typ[7..] - } else { - p.cur_fn.typ - } + mr_type := if p.cur_fn.typ.starts_with('Option_') { p.cur_fn.typ[7..] } else { p.cur_fn.typ } expr_type = mr_type expr_type_chk = types.join(',') cur_fn_typ_chk = cur_fn_typ_chk.replace('_V_MulRet_', '').replace('_PTR_', '*').replace('_V_', ',') @@ -3174,9 +3165,8 @@ fn (p mut Parser) check_unused_imports() { if output == '' { return } - // the imports are usually at the start of the file - //p.production_error_with_token_index('the following imports were never used: $output', 0) + // p.production_error_with_token_index('the following imports were never used: $output', 0) if p.pref.is_verbose { eprintln('Used imports table: ${p.import_table.used_imports.str()}') } @@ -3216,12 +3206,11 @@ fn (p mut Parser) skip_block(inside_first_lcbr bool) { p.check(.rcbr) } -fn todo_remove() { - //x64.new_gen('f') -} +fn todo_remove() {} - -fn (p mut Parser) check_if_parser_is_stuck(parsing_cycle u64, parsing_start_ticks i64){ +// x64.new_gen('f') +// } +fn (p mut Parser) check_if_parser_is_stuck(parsing_cycle u64, parsing_start_ticks i64) { // QTODO p.warn('todo...') /* @@ -3242,4 +3231,5 @@ Please create a GitHub issue: https://github.com/vlang/v/issues/new/choose } p.prev_stuck_token_idx = p.token_idx */ + } diff --git a/vlib/v/fmt/fmt.v b/vlib/v/fmt/fmt.v index bf19d2e858..cc1de83ab8 100644 --- a/vlib/v/fmt/fmt.v +++ b/vlib/v/fmt/fmt.v @@ -206,6 +206,9 @@ fn (f mut Fmt) expr(node ast.Expr) { // type_sym := f.table.get_type_symbol(it.typ) f.write('[') for i, expr in it.exprs { + if i > 0 { + f.wrap_long_line() + } f.expr(expr) if i < it.exprs.len - 1 { f.write(', ') @@ -255,10 +258,7 @@ fn (f mut Fmt) expr(node ast.Expr) { ast.InfixExpr { f.expr(it.left) f.write(' $it.op.str() ') - if f.line_len > max_len { - f.write('\n' + tabs[f.indent + 1]) - f.line_len = 0 - } + f.wrap_long_line() f.expr(it.right) } ast.IndexExpr { @@ -271,6 +271,9 @@ fn (f mut Fmt) expr(node ast.Expr) { f.expr(it.expr) f.write('.' + it.name + '(') for i, arg in it.args { + if i > 0 { + f.wrap_long_line() + } f.expr(arg) if i < it.args.len - 1 { f.write(', ') @@ -313,6 +316,13 @@ fn (f mut Fmt) expr(node ast.Expr) { } } +fn (f mut Fmt) wrap_long_line() { + if f.line_len > max_len { + f.write('\n' + tabs[f.indent + 1]) + f.line_len = 0 + } +} + fn (f mut Fmt) index_expr(node ast.IndexExpr) { mut is_range := false match node.index {