asar coverage - build #277


src/asar/
File: src/asar/errors.h
Date: 2025-03-05 03:28:23
Lines:
51/173
29.5%
Functions:
52/175
29.7%
Branches:
0/0
-%

Line Branch Exec Source
1 #pragma once
2
3 #if defined(__clang__) || defined(__GNUC__)
4 [[gnu::format(printf, 2, 4)]]
5 #else
6 // msvc only has format string checking in enterprise edition lmao
7 // ehh who tf even develops on windows anyways
8 #endif
9 void error_impl(const char* error_id, const char* fmt_string, int whichpass, ...);
10
11 struct errfatal {};
12 struct errline : public errfatal {};
13 struct errblock : public errline {};
14 struct errnull : public errblock {};
15
16 #ifdef __clang__
17 // okay so this ## thing isn't very nice of me, but it works on all compilers
18 // for now. good enough until we upgrade to c++20 (and can use __VA_OPT__)
19 #pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
20 #endif
21 #define throw_err_null(whichpass, id, ...) id(whichpass, ## __VA_ARGS__)
22 #define throw_err_block(whichpass, id, ...) (id(whichpass, ## __VA_ARGS__), throw errblock{})
23 #define throw_err_line(whichpass, id, ...) (id(whichpass, ## __VA_ARGS__), throw errline{})
24 #define throw_err_fatal(whichpass, id, ...) (id(whichpass, ## __VA_ARGS__), throw errfatal{})
25
26 #define ERR(id, fmt_string) template<typename... Ts> inline void err_ ## id(int whichpass, Ts... args) { error_impl("E" #id, fmt_string, whichpass, args...); }
27
28 ERR(limit_reached, "Over %d errors detected. Aborting.")
29 ERR(werror, "One or more warnings was detected with werror on.")
30 ERR(buffer_too_small, "The given buffer is too small to contain the resulting ROM.")
31 ERR(params_null, "params passed to asar_patch_ex() is null.")
32 ERR(params_invalid_size, "Size of params passed to asar_patch_ex() is invalid.")
33 ERR(cmdl_define_invalid, "Invalid define name in %s: '%s'.")
34 ERR(cmdl_define_override, "%s '%s' overrides a previous define. Did you specify the same define twice?")
35 ERR(create_rom_failed, "Couldn't create ROM.")
36 ERR(open_rom_failed, "Couldn't open ROM.")
37 ERR(open_rom_not_smw_extension, "Doesn't look like an SMW ROM. (Maybe its extension is wrong?)")
38 ERR(open_rom_not_smw_header, "Doesn't look like an SMW ROM. (Maybe it's headered?)")
39 ERR(stddefines_no_identifier, "stddefines.txt contains a line with a value, but no identifier.")
40 ERR(stddefine_after_closing_quote, "Broken std defines. (Something after closing quote)")
41 ERR(failed_to_open_file, "Failed to open file '%s'.")
42 6 ERR(file_not_found, "File '%s' wasn't found.")
43 12 ERR(file_offset_out_of_bounds, "File offset %s out of bounds for file '%s'.")
44 ERR(mismatched_parentheses, "Mismatched parentheses.")
45 ERR(invalid_hex_value, "Invalid hex value.")
46 ERR(invalid_binary_value, "Invalid binary value.")
47 ERR(invalid_character, "Invalid character.")
48 //ERR(string_literal_not_terminated, "String literal not terminated.")
49 //ERR(malformed_function_call, "Malformed function call.")
50 10 ERR(invalid_number, "Invalid number.")
51 ERR(garbage_near_quoted_string, "Garbage near quoted string.")
52 10 ERR(mismatched_quotes, "Mismatched quotes.")
53 ERR(rom_too_short, "ROM is too short to have a title. (Expected '%s')")
54 ERR(rom_title_incorrect, "ROM title is incorrect. Expected '%s', got '%s'.")
55 4 ERR(bank_border_crossed, "A bank border was crossed, SNES address $%06X.")
56 6 ERR(start_of_file, "This command may only be used at the start of a file.")
57 ERR(invalid_version_number, "Invalid version number.")
58 ERR(asar_too_old, "This version of Asar is too old for this patch.")
59 ERR(relative_branch_out_of_bounds, "Relative branch out of bounds. (Distance is %s).")
60 ERR(snes_address_doesnt_map_to_rom, "SNES address %s doesn't map to ROM.")
61 2 ERR(snes_address_out_of_bounds, "SNES address %s out of bounds.")
62 ERR(invalid_tcall, "Invalid tcall.")
63 ERR(use_xplus, "Use (x+) instead.")
64 ERR(opcode_length_too_long, "Opcode length is too long.")
65 ERR(superfx_invalid_short_address, "Invalid short address parameter: $%s. (Must be even number and $0000-$01FE)")
66 ERR(superfx_invalid_register, "Invalid register for opcode; valid range is %d-%d.")
67 6 ERR(invalid_opcode_length, "Invalid opcode length specification.")
68 ERR(invalid_mapper, "Invalid mapper.")
69 4 ERR(nan, "NaN encountered.")
70 4 ERR(division_by_zero, "Division by zero.")
71 //ERR(modulo_by_zero, "Modulo by zero.")
72 16 ERR(unknown_operator, "Unknown operator.")
73 ERR(invalid_input, "Invalid input.")
74 ERR(invalid_function_name, "Invalid function name.")
75 ERR(function_not_found, "Function '%s' wasn't found.")
76 ERR(function_redefined, "Function '%s' redefined.")
77 ERR(broken_function_declaration, "Broken function declaration.")
78 //ERR(wrong_num_parameters, "Wrong number of parameters to function.")
79 ERR(invalid_param_name, "Invalid parameter name '%s'.")
80 12 ERR(invalid_label_name, "Invalid label name.")
81 8 ERR(label_not_found, "Label '%s' wasn't found.")
82 2 ERR(label_redefined, "Label '%s' redefined.")
83 24 ERR(broken_label_definition, "Broken label definition.")
84 6 ERR(macro_label_outside_of_macro, "Macro label outside of a macro.")
85 ERR(invalid_namespace_name, "Invalid namespace name.")
86 ERR(invalid_namespace_use, "Invalid use of namespace command.")
87 ERR(invalid_struct_name, "Invalid struct name.")
88 ERR(struct_not_found, "Struct '%s' wasn't found.")
89 ERR(struct_redefined, "Struct '%s' redefined.")
90 ERR(struct_invalid_parent_name, "Invalid parent name.")
91 ERR(invalid_label_missing_closer, "Invalid label name, missing array closer.")
92 //ERR(invalid_subscript, "Invalid array subscript after first scope resolution.")
93 ERR(label_missing_parent, "This label has no parent.")
94 ERR(struct_without_endstruct, "struct without matching endstruct.")
95 ERR(nested_struct, "Can not nest structs.")
96 ERR(missing_struct_params, "Missing struct parameters.")
97 ERR(too_many_struct_params, "Too many struct parameters.")
98 ERR(missing_extends, "Missing extends keyword.")
99 ERR(invalid_endstruct_count, "Invalid endstruct parameter count.")
100 ERR(expected_align, "Expected align parameter.")
101 2 ERR(endstruct_without_struct, "endstruct can only be used in combination with struct.")
102 ERR(alignment_too_small, "Alignment must be >= 1.")
103 ERR(invalid_define_name, "Invalid define name.")
104 7 ERR(define_not_found, "Define '%s' wasn't found.")
105 ERR(define_not_found2, "Define '%s' wasn't found.")
106 ERR(broken_define_declaration, "Broken define declaration.")
107 6 ERR(overriding_builtin_define, "Trying to set define '%s', which is the name of a built-in define and thus can't be modified.")
108 //ERR(define_label_math, "!Define #= Label is not allowed with non-static labels.")
109 ERR(mismatched_braces, "Mismatched braces.")
110 ERR(invalid_macro_name, "Invalid macro name.")
111 ERR(macro_not_found, "Macro '%s' wasn't found.")
112 ERR(macro_redefined, "Macro '%s' redefined. First defined at: %s:%d")
113 ERR(broken_macro_declaration, "Broken macro declaration.")
114 12 ERR(invalid_macro_param_name, "Invalid macro parameter name.")
115 36 ERR(macro_param_not_found, "Macro parameter '%s' wasn't found.%s")
116 ERR(macro_param_redefined, "Macro parameter '%s' redefined")
117 ERR(broken_macro_usage, "Broken macro usage.")
118 ERR(macro_wrong_num_params, "Wrong number of parameters to macro.")
119 ERR(misplaced_endmacro, "Misplaced endmacro.")
120 12 ERR(unclosed_macro, "Unclosed macro: '%s'.")
121 //ERR(label_in_conditional, "Non-static label in %s command.")
122 ERR(misplaced_elseif, "Misplaced elseif.")
123 ERR(elseif_in_while, "Can't use elseif in a while loop.")
124 ERR(misplaced_endif, "Misplaced endif.")
125 ERR(misplaced_else, "Misplaced else.")
126 ERR(else_in_while_loop, "Can't use else in a while loop.")
127 ERR(unclosed_if, "Unclosed if statement.")
128 15 ERR(unknown_command, "Unknown command.")
129 6 ERR(broken_incbin, "Broken incbin command.")
130 2 ERR(recursion_limit, "Recursion limit reached.")
131 2 ERR(cant_be_main_file, "This file may not be used as the main file.%s")
132 84 ERR(no_labels_here, "Can't use non-static labels here.")
133 ERR(invalid_freespace_request, "Invalid freespace request.")
134 ERR(static_freespace_autoclean, "A static freespace must be targeted by at least one autoclean.")
135 2 ERR(static_freespace_growing, "A static freespace may not grow.")
136 ERR(no_freespace_in_mapped_banks, "No freespace found in the mapped banks. (Requested size: %s)")
137 ERR(no_freespace, "No freespace found. (Requested size: %s)")
138 ERR(prot_not_at_freespace_start, "PROT must be used at the start of a freespace block.")
139 ERR(prot_too_many_entries, "Too many entries to PROT.")
140 ERR(autoclean_in_freespace, "autoclean used in freespace.")
141 ERR(autoclean_label_at_freespace_end, "Don't autoclean a label at the end of a freespace block, you'll remove some stuff you're not supposed to remove.")
142 ERR(broken_autoclean, "Broken autoclean command.")
143 ERR(pulltable_without_table, "Using pulltable when there is no table on the stack yet.")
144 ERR(pad_in_freespace, "pad does not make sense in a freespaced code.")
145 //ERR(base_label_invalid, "base Label is not valid.")
146 ERR(pushpc_without_pullpc, "pushpc without matching pullpc.")
147 ERR(pullpc_without_pushpc, "pullpc without matching pushpc.")
148 ERR(pullpc_different_arch, "pullpc in another architecture than the pushpc.")
149 ERR(pullbase_without_pushbase, "pullbase without matching pushbase.")
150 ERR(invalid_check, "Invalid check command.")
151 12 ERR(assertion_failed, "Assertion failed%s")
152 21 ERR(error_command, "error command%s")
153 //ERR(invalid_print_function_syntax, "Invalid printable string syntax.")
154 ERR(unknown_variable, "Unknown variable.")
155 6 ERR(pushwarnings_without_pullwarnings, "warnings push without matching warnings pull.")
156 6 ERR(pullwarnings_without_pushwarnings, "warnings pull without matching warnings push.")
157 ERR(failed_to_open_file_access_denied, "Failed to open file '%s'. Access denied.")
158 12 ERR(failed_to_open_not_regular_file, "Failed to open file '%s'. Not a regular file (did you try to use a directory?)")
159 ERR(bad_dp_base, "The dp base should be page aligned (i.e. a multiple of 256), got %s")
160 ERR(bad_dp_optimize, "Bad dp optimize value %s, expected: [none, ram, always]")
161 ERR(bad_address_optimize, "Bad dp optimize value %s, expected: [default, ram, mirrors]")
162 ERR(bad_optimize, "Bad optimize value %s, expected: [dp, address]")
163 //ERR(require_parameter, "Missing required function parameter")
164 //ERR(expected_parameter, "Not enough parameters in calling of function %s")
165 //ERR(unexpected_parameter, "Too many parameters in calling of function %s")
166 ERR(duplicate_param_name, "Duplicated parameter name: %s in creation of function %s")
167 ERR(invalid_alignment, "Invalid alignment. Expected a power of 2.")
168 ERR(alignment_too_big, "Requested alignment too large.")
169 12 ERR(negative_shift, "Bitshift amount is negative.")
170 8 ERR(macro_not_varadic, "Invalid use of %s, active macro is not variadic.")
171 2 ERR(vararg_sizeof_nomacro, "Invalid use of sizeof(...), no active macro.")
172 12 ERR(macro_wrong_min_params, "Variadic macro call with too few parameters")
173 60 ERR(vararg_out_of_bounds, "Variadic macro parameter %s is out of bounds.%s")
174 2 ERR(vararg_must_be_last, "Variadic macro parameter must be the last parameter.")
175 12 ERR(invalid_global_label, "Global label definition contains an invalid label [%s].")
176 ERR(spc700_addr_out_of_range, "Address %s out of range for instruction, valid range is 0000-1FFF")
177 2 ERR(label_ambiguous, "Label (%s) location is ambiguous due to straddling optimization border.")
178 ERR(feature_unavaliable_in_spcblock, "This feature may not be used while an spcblock is active")
179 ERR(endspcblock_without_spcblock, "Use of endspcblock without matching spcblock")
180 ERR(missing_endspcblock, "Use of endspcblock without matching spcblock")
181 ERR(spcblock_inside_struct, "Can not start an spcblock while a struct is still open")
182 ERR(spcblock_too_few_args, "Too few args passed to spcblock")
183 ERR(spcblock_too_many_args, "Too many args passed to spcblock")
184 ERR(unknown_spcblock_type, "Unknown spcblock format")
185 ERR(custom_spcblock_missing_macro, "Custom spcblock types must refer to a valid macro")
186 ERR(spcblock_macro_doesnt_exist, "Macro specified to custom spcblock was not found")
187 ERR(extra_spcblock_arg_for_type, "Only custom spcblock type takes a fourth argument")
188 ERR(spcblock_macro_must_be_varadic, "Custom spcblock macros must be variadic")
189 ERR(spcblock_macro_invalid_static_args, "Custom spcblock macros must have three static arguments")
190 ERR(spcblock_custom_types_incomplete, "Custom spcblock types are not yet supported. One day.")
191 ERR(invalid_endspcblock_arg, "Invalid argument to endspcblock: \"%s\"")
192 ERR(unknown_endspcblock_format, "Unsupported endspcblock format. Currently supported formats are \"endspcblock\" and \"endspcblock execute [label]\"")
193 ERR(internal_error, "An internal error occured (%s). This is a bug in Asar, please report it at https://github.com/RPGHacker/asar/issues, along with a patch that reproduces it if possible.")
194 ERR(pushns_without_pullns, "pushns without matching pullns.")
195 ERR(pullns_without_pushns, "pullns without matching pushns.")
196 4 ERR(label_forward, "The use of forward labels is not allowed in this context.")
197 ERR(undefined_char, "'%s' is not defined in the character table")
198 2 ERR(invalid_utf8, "Invalid text encoding detected. Asar expects UTF-8-encoded text. Please re-save this file in a text editor of choice using UTF-8 encoding.")
199 ERR(cmdl_utf16_to_utf8_failed, "UTF-16 to UTF-8 string conversion failed: %s.")
200 ERR(broken_command, "Broken %s command. %s")
201 12 ERR(oob, "Operation out of bounds: Requested index %d for object of size %d")
202 6 ERR(unclosed_vararg, "Variadic macro parameter wasn't closed properly.")
203 //ERR(invalid_vararg, "Trying to use variadic macro parameter syntax to resolve a non variadic argument <%s>.")
204 24 ERR(invalid_depth_resolve, "Invalid %s resolution depth: Trying to backwards-resolve a %s using %i '^', but current scope only supports up to %i '^'.")
205 12 ERR(platform_paths, "Platform-specific paths aren'supported. Please use platform-independent paths (use / instead of \\).")
206 ERR(bad_single_line_for, "Single-line for loop not allowed here.")
207 ERR(broken_for_loop, "Broken for loop command: %s")
208 ERR(missing_org, "Missing org or freespace command.")
209 2 ERR(unclosed_block_comment, "Unclosed block comment.")
210 6 ERR(bad_addr_mode, "This addressing mode is not valid for this instruction.")
211 ERR(bad_access_width, "This addressing mode can accept %s arguments, but the provided argument is %d-bit.")
212 ERR(label_before_if, "Labels are not allowed before \"%s\" commands. Suggestion: move the label to a separate line.")
213 24 ERR(bad_type, "Type error when evaluating math: expected %s, got %s")
214 18 ERR(argument_count, "Wrong number of arguments. Expected %d, got %d")
215
216