diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 6e1ecfbfd1..b29cd7c09d 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -54,13 +54,13 @@ pub mut: nr_errors int nr_warnings int nr_notices int - should_abort bool // when too many errors/warnings/notices are accumulated, .should_abort becomes true. It is checked in statement/expression loops, so the checker can return early, instead of wasting time. errors []errors.Error warnings []errors.Warning notices []errors.Notice error_lines []int // to avoid printing multiple errors for the same line expected_type ast.Type expected_or_type ast.Type // fn() or { 'this type' } eg. string. expected or block type + mod string // current module name const_decl string const_deps []string const_names []string @@ -69,20 +69,20 @@ pub mut: rlocked_names []string // vars that are currently read-locked in_for_count int // if checker is currently in a for loop // checked_ident string // to avoid infinite checker loops + should_abort bool // when too many errors/warnings/notices are accumulated, .should_abort becomes true. It is checked in statement/expression loops, so the checker can return early, instead of wasting time. returns bool scope_returns bool - mod string // current module name - is_builtin_mod bool // true inside the 'builtin', 'os' or 'strconv' modules; TODO: remove the need for special casing this - is_generated bool // true for `[generated] module xyz` .v files - inside_unsafe bool // true inside `unsafe {}` blocks - inside_const bool // true inside `const ( ... )` blocks - inside_anon_fn bool // true inside `fn() { ... }()` - inside_ref_lit bool // true inside `a := &something` - inside_defer bool // true inside `defer {}` blocks - inside_fn_arg bool // `a`, `b` in `a.f(b)` - inside_ct_attr bool // true inside `[if expr]` - skip_flags bool // should `#flag` and `#include` be skipped - fn_level int // 0 for the top level, 1 for `fn abc() {}`, 2 for a nested fn, etc + is_builtin_mod bool // true inside the 'builtin', 'os' or 'strconv' modules; TODO: remove the need for special casing this + is_generated bool // true for `[generated] module xyz` .v files + inside_unsafe bool // true inside `unsafe {}` blocks + inside_const bool // true inside `const ( ... )` blocks + inside_anon_fn bool // true inside `fn() { ... }()` + inside_ref_lit bool // true inside `a := &something` + inside_defer bool // true inside `defer {}` blocks + inside_fn_arg bool // `a`, `b` in `a.f(b)` + inside_ct_attr bool // true inside `[if expr]` + skip_flags bool // should `#flag` and `#include` be skipped + fn_level int // 0 for the top level, 1 for `fn abc() {}`, 2 for a nested fn, etc ct_cond_stack []ast.Expr mut: stmt_level int // the nesting level inside each stmts list; @@ -90,29 +90,28 @@ mut: // 1 for statements directly at each inner scope level; // increases for `x := if cond { statement_list1} else {statement_list2}`; // increases for `x := optfn() or { statement_list3 }`; - is_last_stmt bool files []ast.File - expr_level int // to avoid infinite recursion segfaults due to compiler bugs - inside_sql bool // to handle sql table fields pseudo variables + expr_level int // to avoid infinite recursion segfaults due to compiler bugs cur_orm_ts ast.TypeSymbol error_details []string vmod_file_content string // needed for @VMOD_FILE, contents of the file, *NOT its path** - vweb_gen_types []ast.Type // vweb route checks - prevent_sum_type_unwrapping_once bool // needed for assign new values to sum type, stopping unwrapping then loop_label string // set when inside a labelled for loop + vweb_gen_types []ast.Type // vweb route checks timers &util.Timers = util.get_timers() comptime_fields_default_type ast.Type comptime_fields_type map[string]ast.Type fn_scope &ast.Scope = voidptr(0) main_fn_decl_node ast.FnDecl match_exhaustive_cutoff_limit int = 10 - // TODO: these are here temporarily and used for deprecations; remove soon - using_new_err_struct bool - inside_selector_expr bool - inside_println_arg bool - inside_decl_rhs bool - inside_if_guard bool // true inside the guard condition of `if x := opt() {}` - need_recheck_generic_fns bool // need recheck generic fns because there are cascaded nested generic fn + is_last_stmt bool + prevent_sum_type_unwrapping_once bool // needed for assign new values to sum type, stopping unwrapping then + using_new_err_struct bool + need_recheck_generic_fns bool // need recheck generic fns because there are cascaded nested generic fn + inside_sql bool // to handle sql table fields pseudo variables + inside_selector_expr bool + inside_println_arg bool + inside_decl_rhs bool + inside_if_guard bool // true inside the guard condition of `if x := opt() {}` } pub fn new_checker(table &ast.Table, pref &pref.Preferences) &Checker {