| ... | @@ -985,6 +985,9 @@ int main(int argc, char **argv) { | ... | @@ -985,6 +985,9 @@ int main(int argc, char **argv) { |
| 985 | { | 985 | { |
| 986 | fprintf(stderr, "Expected source file argument.\n"); | 986 | fprintf(stderr, "Expected source file argument.\n"); |
| 987 | return print_error_usage(arg0); | 987 | return print_error_usage(arg0); |
| | 988 | } else if (cmd == CmdRun && emit_file_type != EmitFileTypeBinary) { |
| | 989 | fprintf(stderr, "Cannot run non-executable file.\n"); |
| | 990 | return print_error_usage(arg0); |
| 988 | } | 991 | } |
| 989 | | 992 | |
| 990 | assert(cmd != CmdBuild || out_type != OutTypeUnknown); | 993 | assert(cmd != CmdBuild || out_type != OutTypeUnknown); |
| ... | @@ -1189,6 +1192,12 @@ int main(int argc, char **argv) { | ... | @@ -1189,6 +1192,12 @@ int main(int argc, char **argv) { |
| 1189 | Buf *test_exe_path = buf_alloc(); | 1192 | Buf *test_exe_path = buf_alloc(); |
| 1190 | *test_exe_path = os_path_resolve(&test_exe_path_unresolved, 1); | 1193 | *test_exe_path = os_path_resolve(&test_exe_path_unresolved, 1); |
| 1191 | | 1194 | |
| | 1195 | if (emit_file_type != EmitFileTypeBinary) { |
| | 1196 | fprintf(stderr, "Created %s but skipping execution because it is non executable.\n", |
| | 1197 | buf_ptr(test_exe_path)); |
| | 1198 | return 0; |
| | 1199 | } |
| | 1200 | |
| 1192 | for (size_t i = 0; i < test_exec_args.length; i += 1) { | 1201 | for (size_t i = 0; i < test_exec_args.length; i += 1) { |
| 1193 | if (test_exec_args.items[i] == nullptr) { | 1202 | if (test_exec_args.items[i] == nullptr) { |
| 1194 | test_exec_args.items[i] = buf_ptr(test_exe_path); | 1203 | test_exec_args.items[i] = buf_ptr(test_exe_path); |