diff options
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp index 46bf2cd71..b815615e8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -162,6 +162,7 @@ void usage(String argv0) { print_usage_line(0, "Commands:"); print_usage_line(1, "build compile .odin file as executable"); print_usage_line(1, "run compile and run .odin file"); + print_usage_line(1, "check parse and typecheck .odin file"); print_usage_line(1, "docs generate documentation for a .odin file"); print_usage_line(1, "version print version"); } @@ -724,6 +725,13 @@ int main(int arg_count, char **arg_ptr) { return 1; } init_filename = args[2]; + } else if (command == "check") { + if (args.count < 3) { + usage(args[0]); + return 1; + } + build_context.no_output_files = true; + init_filename = args[2]; } else if (command == "docs") { if (args.count < 3) { usage(args[0]); @@ -750,7 +758,9 @@ int main(int arg_count, char **arg_ptr) { return 1; } - + if (build_context.no_output_files) { + // are there any flags that it shouldn't work with? maybe -out or -keep-temp-files? + } // NOTE(bill): add 'shared' directory if it is not already set if (!find_library_collection_path(str_lit("shared"), nullptr)) { @@ -795,6 +805,14 @@ int main(int arg_count, char **arg_ptr) { check_parsed_files(&checker); + if (build_context.no_output_files) { + if (build_context.show_timings) { + show_timings(&checker, &timings); + } + + return 0; + } + irGen ir_gen = {0}; if (!ir_gen_init(&ir_gen, &checker)) { return 1; |