Browse Source

GDScript: Allow mixed indentation on blank lines

Danil Alexeev 2 years ago
parent
commit
00ad9e484e

+ 9 - 9
modules/gdscript/gdscript_tokenizer.cpp

@@ -1162,15 +1162,6 @@ void GDScriptTokenizer::check_indent() {
 			_advance();
 		}
 
-		if (mixed && !(line_continuation || multiline_mode)) {
-			Token error = make_error("Mixed use of tabs and spaces for indentation.");
-			error.start_line = line;
-			error.start_column = 1;
-			error.leftmost_column = 1;
-			error.rightmost_column = column;
-			push_error(error);
-		}
-
 		if (_is_at_end()) {
 			// Reached the end with an empty line, so just dedent as much as needed.
 			pending_indents -= indent_level();
@@ -1214,6 +1205,15 @@ void GDScriptTokenizer::check_indent() {
 			continue;
 		}
 
+		if (mixed && !line_continuation && !multiline_mode) {
+			Token error = make_error("Mixed use of tabs and spaces for indentation.");
+			error.start_line = line;
+			error.start_column = 1;
+			error.leftmost_column = 1;
+			error.rightmost_column = column;
+			push_error(error);
+		}
+
 		if (line_continuation || multiline_mode) {
 			// We cleared up all the whitespace at the beginning of the line.
 			// But if this is a continuation or multiline mode and we don't want any indentation change.

+ 2 - 0
modules/gdscript/tests/scripts/parser/.editorconfig

@@ -0,0 +1,2 @@
+[*.{gd,out}]
+trim_trailing_whitespace = false

+ 20 - 0
modules/gdscript/tests/scripts/parser/features/mixed_indentation_on_blank_lines.gd

@@ -0,0 +1,20 @@
+# Empty line:
+	  
+
+# Comment line:
+	  # Comment.
+
+func test():
+	print(1)
+
+	if true:
+
+	# Empty line:
+	  
+
+		print(2)
+
+	# Comment line:
+	  # Comment.
+
+	print(3)

+ 4 - 0
modules/gdscript/tests/scripts/parser/features/mixed_indentation_on_blank_lines.out

@@ -0,0 +1,4 @@
+GDTEST_OK
+1
+2
+3