Jelajahi Sumber

Merge pull request #54346 from mhilbrunner/used-what-instead-of-what

Rémi Verschelde 3 tahun lalu
induk
melakukan
5efb11926d

+ 8 - 1
modules/gdscript/gdscript_tokenizer.cpp

@@ -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;
@@ -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.

+ 1 - 0
modules/gdscript/gdscript_tokenizer.h

@@ -233,6 +233,7 @@ private:
 	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();
 

+ 1 - 1
modules/gdscript/tests/scripts/parser/errors/mixing_tabs_spaces.out

@@ -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.