mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-01-31 12:00:38 +00:00
Implemented -f[no]enhanced-diagnostics, to enable/disable the usage of enhanced diagnostics.
This commit is contained in:
parent
5377835f1e
commit
793547a132
4 changed files with 20 additions and 13 deletions
|
@ -99,6 +99,10 @@
|
|||
# variables with the name 'nil' to be declared.
|
||||
PREMISSIVE = false
|
||||
|
||||
# Enable enhanced diagnostic messages. i.e provides a "did you mean"
|
||||
# <ident> when you accidently typo. Amongst others
|
||||
ENHANCED_DIAGNOSTICS = true
|
||||
|
||||
# These are all the warnings, usually present via the -W prefix from
|
||||
# the command line.
|
||||
[warnings]
|
||||
|
|
1
opts.c
1
opts.c
|
@ -65,6 +65,7 @@ static void opts_setdefault() {
|
|||
opts_set(opts.flags, FTEPP_PREDEFS, false);
|
||||
opts_set(opts.flags, CORRECT_TERNARY, true);
|
||||
opts_set(opts.flags, BAIL_ON_WERROR, true);
|
||||
opts_set(opts.flags, ENHANCED_DIAGNOSTICS, true);
|
||||
}
|
||||
|
||||
void opts_init(const char *output, int standard, size_t arraysize) {
|
||||
|
|
1
opts.def
1
opts.def
|
@ -48,6 +48,7 @@
|
|||
GMQCC_DEFINE_FLAG(LOOP_LABELS)
|
||||
GMQCC_DEFINE_FLAG(UNTYPED_NIL)
|
||||
GMQCC_DEFINE_FLAG(PERMISSIVE)
|
||||
GMQCC_DEFINE_FLAG(ENHANCED_DIAGNOSTICS)
|
||||
#endif
|
||||
|
||||
/* warning flags */
|
||||
|
|
27
parser.c
27
parser.c
|
@ -1642,22 +1642,23 @@ static ast_expression* parse_expression_leave(parser_t *parser, bool stopatcomma
|
|||
* We should also consider adding correction tables for
|
||||
* other things as well.
|
||||
*/
|
||||
for (i = 0; i < vec_size(parser->correct_variables); i++) {
|
||||
correct = correct_str(parser->correct_variables[i], parser_tokval(parser));
|
||||
if (strcmp(correct, parser_tokval(parser))) {
|
||||
break;
|
||||
} else if (correct) {
|
||||
if (OPTS_FLAG(ENHANCED_DIAGNOSTICS)) {
|
||||
for (i = 0; i < vec_size(parser->correct_variables); i++) {
|
||||
correct = correct_str(parser->correct_variables[i], parser_tokval(parser));
|
||||
if (strcmp(correct, parser_tokval(parser))) {
|
||||
break;
|
||||
} else if (correct) {
|
||||
mem_d(correct);
|
||||
}
|
||||
}
|
||||
|
||||
if (correct) {
|
||||
parseerror(parser, "unexpected ident: %s (did you mean %s?)", parser_tokval(parser), correct);
|
||||
mem_d(correct);
|
||||
goto onerr;
|
||||
}
|
||||
}
|
||||
|
||||
if (correct) {
|
||||
parseerror(parser, "unexpected ident: %s (did you mean %s?)", parser_tokval(parser), correct);
|
||||
mem_d(correct);
|
||||
} else {
|
||||
parseerror(parser, "unexpected ident: %s", parser_tokval(parser));
|
||||
}
|
||||
|
||||
parseerror(parser, "unexpected ident: %s", parser_tokval(parser));
|
||||
goto onerr;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue