checker: much less verbose error messages
parent
1d52847924
commit
0dad1a89e6
|
@ -32,7 +32,7 @@ pub fn new_builder(pref &pref.Preferences) Builder {
|
|||
mod_file_cacher: new_mod_file_cacher()
|
||||
pref: pref
|
||||
table: table
|
||||
checker: checker.new_checker(table)
|
||||
checker: checker.new_checker(table, pref)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
v.ast
|
||||
v.table
|
||||
v.token
|
||||
v.pref
|
||||
os
|
||||
)
|
||||
|
||||
|
@ -20,14 +21,17 @@ mut:
|
|||
file ast.File
|
||||
nr_errors int
|
||||
errors []string
|
||||
error_lines []int // to avoid printing multiple errors for the same line
|
||||
expected_type table.Type
|
||||
fn_return_type table.Type // current function's return type
|
||||
// fn_decl ast.FnDecl
|
||||
pref &pref.Preferences // Preferences shared from V struct
|
||||
}
|
||||
|
||||
pub fn new_checker(table &table.Table) Checker {
|
||||
pub fn new_checker(table &table.Table, pref &pref.Preferences) Checker {
|
||||
return Checker{
|
||||
table: table
|
||||
pref: pref
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -947,7 +951,6 @@ pub fn (c mut Checker) ident(ident mut ast.Ident) table.Type {
|
|||
if ident.is_c {
|
||||
return table.int_type
|
||||
}
|
||||
// TODO
|
||||
if ident.name != '_' {
|
||||
c.error('unknown ident: `$ident.name`', ident.pos)
|
||||
}
|
||||
|
@ -1171,17 +1174,24 @@ pub fn (c mut Checker) map_init(node mut ast.MapInit) table.Type {
|
|||
pub fn (c mut Checker) error(s string, pos token.Position) {
|
||||
c.nr_errors++
|
||||
//if c.pref.is_verbose {
|
||||
if c.pref.verbosity.is_higher_or_equal(.level_one) {
|
||||
print_backtrace()
|
||||
//}
|
||||
}
|
||||
mut path := c.file.path
|
||||
// Get relative path
|
||||
workdir := os.getwd() + os.path_separator
|
||||
if path.starts_with(workdir) {
|
||||
path = path.replace(workdir, '')
|
||||
}
|
||||
final_msg_line := '$path:$pos.line_nr: checker error #$c.nr_errors: $s'
|
||||
mut final_msg_line := '$path:$pos.line_nr: $s'
|
||||
if c.pref.verbosity.is_higher_or_equal(.level_one) {
|
||||
final_msg_line = '$path:$pos.line_nr: checker error #$c.nr_errors: $s'
|
||||
}
|
||||
c.errors << final_msg_line
|
||||
eprintln(final_msg_line)
|
||||
if !(pos.line_nr in c.error_lines) {
|
||||
eprintln(final_msg_line)
|
||||
}
|
||||
c.error_lines << pos.line_nr
|
||||
/*
|
||||
if colored_output {
|
||||
eprintln(term.bold(term.red(final_msg_line)))
|
||||
|
|
Loading…
Reference in New Issue