mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: add support for -d trace_gen
too. Add v tracev
command.
This commit is contained in:
parent
587b9dd8aa
commit
c858978348
17
cmd/tools/vtracev.v
Normal file
17
cmd/tools/vtracev.v
Normal file
@ -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:
|
* Others:
|
||||||
build Build a V code in the provided path (the default, so you can skip the word `build`).
|
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).
|
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 <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.
|
Use "v help other" to see less frequently used commands.
|
||||||
|
@ -12,7 +12,7 @@ import v.builder
|
|||||||
const (
|
const (
|
||||||
simple_cmd = [
|
simple_cmd = [
|
||||||
'fmt', 'up', 'vet',
|
'fmt', 'up', 'vet',
|
||||||
'self', 'symlink', 'bin2v',
|
'self', 'tracev', 'symlink', 'bin2v',
|
||||||
'test', 'test-fmt', 'test-compiler', 'test-fixed',
|
'test', 'test-fmt', 'test-compiler', 'test-fixed',
|
||||||
'repl',
|
'repl',
|
||||||
'build-tools', 'build-examples',
|
'build-tools', 'build-examples',
|
||||||
|
@ -559,6 +559,9 @@ pub fn (g Gen) save() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut g Gen) write(s string) {
|
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 > 0 && g.empty_line {
|
||||||
if g.indent < tabs.len {
|
if g.indent < tabs.len {
|
||||||
g.out.write(tabs[g.indent])
|
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) {
|
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 > 0 && g.empty_line {
|
||||||
if g.indent < tabs.len {
|
if g.indent < tabs.len {
|
||||||
g.out.write(tabs[g.indent])
|
g.out.write(tabs[g.indent])
|
||||||
|
Loading…
Reference in New Issue
Block a user