Browse Source

Add internal flag for testing stuff

gingerBill 1 year ago
parent
commit
d6b8544f50
3 changed files with 13 additions and 5 deletions
  1. 1 0
      src/build_settings.cpp
  2. 7 5
      src/check_builtin.cpp
  3. 5 0
      src/main.cpp

+ 1 - 0
src/build_settings.cpp

@@ -878,6 +878,7 @@ struct BuildContext {
 
 
 	bool   ignore_lazy;
 	bool   ignore_lazy;
 	bool   ignore_llvm_build;
 	bool   ignore_llvm_build;
+	bool   ignore_panic;
 
 
 	bool   ignore_microsoft_magic;
 	bool   ignore_microsoft_magic;
 	bool   linker_map_file;
 	bool   linker_map_file;

+ 7 - 5
src/check_builtin.cpp

@@ -1726,11 +1726,13 @@ gb_internal bool check_builtin_procedure_directive(CheckerContext *c, Operand *o
 			gb_string_free(str);
 			gb_string_free(str);
 			return false;
 			return false;
 		}
 		}
-		error(call, "Compile time panic: %.*s", LIT(operand->value.value_string));
-		if (c->proc_name != "") {
-			gbString str = type_to_string(c->curr_proc_sig);
-			error_line("\tCalled within '%.*s' :: %s\n", LIT(c->proc_name), str);
-			gb_string_free(str);
+		if (!build_context.ignore_panic) {
+			error(call, "Compile time panic: %.*s", LIT(operand->value.value_string));
+			if (c->proc_name != "") {
+				gbString str = type_to_string(c->curr_proc_sig);
+				error_line("\tCalled within '%.*s' :: %s\n", LIT(c->proc_name), str);
+				gb_string_free(str);
+			}
 		}
 		}
 		operand->type = t_invalid;
 		operand->type = t_invalid;
 		operand->mode = Addressing_NoValue;
 		operand->mode = Addressing_NoValue;

+ 5 - 0
src/main.cpp

@@ -345,6 +345,7 @@ enum BuildFlagKind {
 	// internal use only
 	// internal use only
 	BuildFlag_InternalIgnoreLazy,
 	BuildFlag_InternalIgnoreLazy,
 	BuildFlag_InternalIgnoreLLVMBuild,
 	BuildFlag_InternalIgnoreLLVMBuild,
+	BuildFlag_InternalIgnorePanic,
 
 
 	BuildFlag_Tilde,
 	BuildFlag_Tilde,
 
 
@@ -543,6 +544,7 @@ gb_internal bool parse_build_flags(Array<String> args) {
 
 
 	add_flag(&build_flags, BuildFlag_InternalIgnoreLazy,      str_lit("internal-ignore-lazy"),      BuildFlagParam_None,    Command_all);
 	add_flag(&build_flags, BuildFlag_InternalIgnoreLazy,      str_lit("internal-ignore-lazy"),      BuildFlagParam_None,    Command_all);
 	add_flag(&build_flags, BuildFlag_InternalIgnoreLLVMBuild, str_lit("internal-ignore-llvm-build"),BuildFlagParam_None,    Command_all);
 	add_flag(&build_flags, BuildFlag_InternalIgnoreLLVMBuild, str_lit("internal-ignore-llvm-build"),BuildFlagParam_None,    Command_all);
+	add_flag(&build_flags, BuildFlag_InternalIgnorePanic,    str_lit("internal-ignore-panic"),     BuildFlagParam_None,    Command_all);
 
 
 #if ALLOW_TILDE
 #if ALLOW_TILDE
 	add_flag(&build_flags, BuildFlag_Tilde,                   str_lit("tilde"),                     BuildFlagParam_None,    Command__does_build);
 	add_flag(&build_flags, BuildFlag_Tilde,                   str_lit("tilde"),                     BuildFlagParam_None,    Command__does_build);
@@ -1352,6 +1354,9 @@ gb_internal bool parse_build_flags(Array<String> args) {
 						case BuildFlag_InternalIgnoreLLVMBuild:
 						case BuildFlag_InternalIgnoreLLVMBuild:
 							build_context.ignore_llvm_build = true;
 							build_context.ignore_llvm_build = true;
 							break;
 							break;
+						case BuildFlag_InternalIgnorePanic:
+							build_context.ignore_panic = true;
+							break;
 						case BuildFlag_Tilde:
 						case BuildFlag_Tilde:
 							build_context.tilde_backend = true;
 							build_context.tilde_backend = true;
 							break;
 							break;