cgen: add support for `-d trace_gen` too. Add `v tracev` command.
parent
587b9dd8aa
commit
c858978348
|
@ -0,0 +1,17 @@
|
|||
module main
|
||||
|
||||
import os
|
||||
import v.pref
|
||||
|
||||
fn main() {
|
||||
vexe := pref.vexe_path()
|
||||
vroot := os.dir(vexe)
|
||||
os.chdir(vroot)
|
||||
os.setenv('VCOLORS', 'always', true)
|
||||
self_idx := os.args.index('tracev')
|
||||
args := os.args[1..self_idx]
|
||||
args_str := args.join(' ')
|
||||
options := if args.len > 0 { '($args_str)' } else { '' }
|
||||
println('Compiling a `tracev` executable ${options}...')
|
||||
os.system('$vexe -cg -d trace_parser -d trace_checker -d trace_gen -o tracev $args_str cmd/v')
|
||||
}
|
|
@ -35,6 +35,9 @@ V supports the following commands:
|
|||
* Others:
|
||||
build Build a V code in the provided path (the default, so you can skip the word `build`).
|
||||
translate Translate C code to V (coming soon in 0.3).
|
||||
tracev Produce a tracing version of the v compiler.
|
||||
Use `tracev yourfile.v` when the compiler panics.
|
||||
NB: `tracev` is much slower and more verbose than ordinary `v`
|
||||
|
||||
Use "v help <command>" for more information about a command, example: `v help build`, `v help build-c`
|
||||
Use "v help other" to see less frequently used commands.
|
||||
|
|
|
@ -12,7 +12,7 @@ import v.builder
|
|||
const (
|
||||
simple_cmd = [
|
||||
'fmt', 'up', 'vet',
|
||||
'self', 'symlink', 'bin2v',
|
||||
'self', 'tracev', 'symlink', 'bin2v',
|
||||
'test', 'test-fmt', 'test-compiler', 'test-fixed',
|
||||
'repl',
|
||||
'build-tools', 'build-examples',
|
||||
|
|
|
@ -559,6 +559,9 @@ pub fn (g Gen) save() {
|
|||
}
|
||||
|
||||
pub fn (mut g Gen) write(s string) {
|
||||
$if trace_gen ? {
|
||||
eprintln('gen file: ${g.file.path:-30} | last_fn_c_name: ${g.last_fn_c_name:-45} | write: $s')
|
||||
}
|
||||
if g.indent > 0 && g.empty_line {
|
||||
if g.indent < tabs.len {
|
||||
g.out.write(tabs[g.indent])
|
||||
|
@ -573,6 +576,9 @@ pub fn (mut g Gen) write(s string) {
|
|||
}
|
||||
|
||||
pub fn (mut g Gen) writeln(s string) {
|
||||
$if trace_gen ? {
|
||||
eprintln('gen file: ${g.file.path:-30} | last_fn_c_name: ${g.last_fn_c_name:-45} | writeln: $s')
|
||||
}
|
||||
if g.indent > 0 && g.empty_line {
|
||||
if g.indent < tabs.len {
|
||||
g.out.write(tabs[g.indent])
|
||||
|
|
Loading…
Reference in New Issue