Skip to content

Commit

Permalink
Improve GDScript indentation error message
Browse files Browse the repository at this point in the history
  • Loading branch information
mhilbrunner committed Oct 28, 2021
1 parent 0767a1c commit 626ca50
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 2 deletions.
9 changes: 8 additions & 1 deletion modules/gdscript/gdscript_tokenizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1064,7 +1064,8 @@ void GDScriptTokenizer::check_indent() {
// First time indenting, choose character now.
indent_char = current_indent_char;
} else if (current_indent_char != indent_char) {
Token error = make_error(vformat("Used \"%s\" for indentation instead \"%s\" as used before in the file.", String(&current_indent_char, 1).c_escape(), String(&indent_char, 1).c_escape()));
Token error = make_error(vformat("Used %s character for indentation instead of %s as used before in the file.",
_get_indent_char_name(current_indent_char), _get_indent_char_name(indent_char)));
error.start_line = line;
error.start_column = 1;
error.leftmost_column = 1;
Expand Down Expand Up @@ -1114,6 +1115,12 @@ void GDScriptTokenizer::check_indent() {
}
}

String GDScriptTokenizer::_get_indent_char_name(char32_t ch) {
ERR_FAIL_COND_V(ch != ' ' && ch != '\t', String(&ch, 1).c_escape());

return ch == ' ' ? "space" : "tab";
}

void GDScriptTokenizer::_skip_whitespace() {
if (pending_indents != 0) {
// Still have some indent/dedent tokens to give.
Expand Down
1 change: 1 addition & 0 deletions modules/gdscript/gdscript_tokenizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ class GDScriptTokenizer {
bool has_error() const { return !error_stack.is_empty(); }
Token pop_error();
char32_t _advance();
String _get_indent_char_name(char32_t ch);
void _skip_whitespace();
void check_indent();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
GDTEST_PARSER_ERROR
Used "\t" for indentation instead " " as used before in the file.
Used tab character for indentation instead of space as used before in the file.

0 comments on commit 626ca50

Please sign in to comment.