vv: make warns/errors usable in emacs/vim
parent
7882312697
commit
7bf49aba54
|
@ -19,6 +19,8 @@ fn test_c_files() {
|
|||
println('Running V => C tests')
|
||||
vexe := os.getenv('VEXE')
|
||||
vroot := filepath.dir(vexe)
|
||||
term_ok := term.ok_message('OK')
|
||||
term_fail := term.fail_message('FAIL')
|
||||
for i in 1 .. nr_tests + 1 {
|
||||
path := '$vroot/vlib/v/gen/tests/${i}.vv'
|
||||
ctext := os.read_file('$vroot/vlib/v/gen/tests/${i}.c') or {
|
||||
|
@ -28,12 +30,11 @@ fn test_c_files() {
|
|||
program := parser.parse_file(path, table)
|
||||
res := gen.cgen([program], table)
|
||||
if compare_texts(res, ctext) {
|
||||
eprintln('${i}... ' + term.green('OK'))
|
||||
eprintln('${term_ok} ${i}')
|
||||
}
|
||||
else {
|
||||
eprintln('${i}... ' + term.red('FAIL'))
|
||||
eprintln(path)
|
||||
eprintln('got:\n$res')
|
||||
eprintln('${term_fail} ${i}')
|
||||
eprintln('${path}: got\n{$res}')
|
||||
assert false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,9 @@ import (
|
|||
term
|
||||
os
|
||||
)
|
||||
const (
|
||||
colored_output = term.can_show_color_on_stderr()
|
||||
)
|
||||
|
||||
type PrefixParseFn fn()ast.Expr
|
||||
|
||||
|
@ -249,17 +252,32 @@ pub fn (p mut Parser) assign_stmt() ast.AssignStmt {
|
|||
|
||||
pub fn (p &Parser) error(s string) {
|
||||
print_backtrace()
|
||||
println(term.bold(term.red('$p.file_name:$p.tok.line_nr: $s')))
|
||||
final_msg_line := '$p.file_name:$p.tok.line_nr: error: $s'
|
||||
if colored_output {
|
||||
eprintln(term.bold(term.red(final_msg_line)))
|
||||
}else{
|
||||
eprintln(final_msg_line)
|
||||
}
|
||||
exit(1)
|
||||
}
|
||||
|
||||
pub fn (p &Parser) error_at_line(s string, line_nr int) {
|
||||
println(term.bold(term.red('$p.file_name:$line_nr: $s')))
|
||||
final_msg_line := '$p.file_name:$line_nr: error: $s'
|
||||
if colored_output {
|
||||
eprintln(term.bold(term.red(final_msg_line)))
|
||||
}else{
|
||||
eprintln(final_msg_line)
|
||||
}
|
||||
exit(1)
|
||||
}
|
||||
|
||||
pub fn (p &Parser) warn(s string) {
|
||||
println(term.blue('$p.file_name:$p.tok.line_nr: $s'))
|
||||
final_msg_line := '$p.file_name:$p.tok.line_nr: warning: $s'
|
||||
if colored_output {
|
||||
eprintln(term.bold(term.blue(final_msg_line)))
|
||||
}else{
|
||||
eprintln(final_msg_line)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn (p mut Parser) name_expr() (ast.Expr,types.TypeIdent) {
|
||||
|
|
|
@ -245,7 +245,8 @@ pub fn (t mut Table) register_type(typ types.Type, name string, idx int) {
|
|||
}
|
||||
t.type_idxs[name] = idx
|
||||
t.types << typ
|
||||
t.methods << []Fn // TODO [] breaks V
|
||||
efn := []Fn
|
||||
t.methods << efn // TODO [] breaks V
|
||||
}
|
||||
|
||||
pub fn (t mut Table) register_struct(typ types.Struct) int {
|
||||
|
|
Loading…
Reference in New Issue