compiler: do not exit early, when given -o x.c or -o x.js
							parent
							
								
									4c320e1512
								
							
						
					
					
						commit
						e08566d571
					
				|  | @ -28,6 +28,10 @@ const ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|  | 	main_v() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn main_v() { | ||||||
| 	args := os.args[1..] | 	args := os.args[1..] | ||||||
| 	// args = 123
 | 	// args = 123
 | ||||||
| 	if args.len == 0 || args[0] in ['-', 'repl'] { | 	if args.len == 0 || args[0] in ['-', 'repl'] { | ||||||
|  |  | ||||||
|  | @ -40,6 +40,7 @@ fn (mut v Builder) cc() { | ||||||
| 	ends_with_c := v.pref.out_name.ends_with('.c') | 	ends_with_c := v.pref.out_name.ends_with('.c') | ||||||
| 	ends_with_js := v.pref.out_name.ends_with('.js') | 	ends_with_js := v.pref.out_name.ends_with('.js') | ||||||
| 	if ends_with_c || ends_with_js { | 	if ends_with_c || ends_with_js { | ||||||
|  | 		v.pref.skip_running = true | ||||||
| 		// Translating V code to JS by launching vjs.
 | 		// Translating V code to JS by launching vjs.
 | ||||||
| 		// Using a separate process for V.js is for performance mostly,
 | 		// Using a separate process for V.js is for performance mostly,
 | ||||||
| 		// to avoid constant is_js checks.
 | 		// to avoid constant is_js checks.
 | ||||||
|  | @ -69,7 +70,7 @@ fn (mut v Builder) cc() { | ||||||
| 		os.mv_by_cp(v.out_name_c, v.pref.out_name) or { | 		os.mv_by_cp(v.out_name_c, v.pref.out_name) or { | ||||||
| 			panic(err) | 			panic(err) | ||||||
| 		} | 		} | ||||||
| 		exit(0) | 		return | ||||||
| 	} | 	} | ||||||
| 	// Cross compiling for Windows
 | 	// Cross compiling for Windows
 | ||||||
| 	if v.pref.os == .windows { | 	if v.pref.os == .windows { | ||||||
|  |  | ||||||
|  | @ -40,10 +40,11 @@ pub fn compile(command string, pref &pref.Preferences) { | ||||||
| 	if pref.is_stats { | 	if pref.is_stats { | ||||||
| 		println('compilation took: ${sw.elapsed().milliseconds()} ms') | 		println('compilation took: ${sw.elapsed().milliseconds()} ms') | ||||||
| 	} | 	} | ||||||
|  | 	// running does not require the parsers anymore
 | ||||||
|  | 	b.myfree() | ||||||
| 	if pref.is_test || pref.is_run { | 	if pref.is_test || pref.is_run { | ||||||
| 		b.run_compiled_executable_and_exit() | 		b.run_compiled_executable_and_exit() | ||||||
| 	} | 	} | ||||||
| 	b.myfree() |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Temporary, will be done by -autofree
 | // Temporary, will be done by -autofree
 | ||||||
|  | @ -54,6 +55,9 @@ fn (mut b Builder) myfree() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn (mut b Builder) run_compiled_executable_and_exit() { | fn (mut b Builder) run_compiled_executable_and_exit() { | ||||||
|  | 	if b.pref.skip_running { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
| 	if b.pref.is_verbose { | 	if b.pref.is_verbose { | ||||||
| 		println('============ running $b.pref.out_name ============') | 		println('============ running $b.pref.out_name ============') | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -83,6 +83,7 @@ pub mut: | ||||||
| 	run_args            []string // `v run x.v 1 2 3` => `1 2 3`
 | 	run_args            []string // `v run x.v 1 2 3` => `1 2 3`
 | ||||||
| 	printfn_list        []string // a list of generated function names, whose source should be shown, for debugging
 | 	printfn_list        []string // a list of generated function names, whose source should be shown, for debugging
 | ||||||
| 	print_v_files       bool     // when true, just print the list of all parsed .v files then stop.
 | 	print_v_files       bool     // when true, just print the list of all parsed .v files then stop.
 | ||||||
|  | 	skip_running        bool     // when true, do no try to run the produced file (set by b.cc(), when -o x.c or -o x.js)
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub fn backend_from_string(s string) ?Backend { | pub fn backend_from_string(s string) ?Backend { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue