Explorar o código

Merge pull request #37265 from BigRed-118/mark_assert_safe

Mark assert lines as safe in gdscript
Rémi Verschelde %!s(int64=5) %!d(string=hai) anos
pai
achega
39f77f95b8
Modificáronse 1 ficheiros con 9 adicións e 0 borrados
  1. 9 0
      modules/gdscript/gdscript_parser.cpp

+ 9 - 0
modules/gdscript/gdscript_parser.cpp

@@ -2801,6 +2801,7 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
 					return;
 				}
 
+				_mark_line_as_safe(line);
 				NewLineNode *nl2 = alloc_node<NewLineNode>();
 				nl2->line = line;
 				p_block->statements.push_back(nl2);
@@ -3314,6 +3315,8 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
 					return;
 				}
 
+				int assert_line = tokenizer->get_token_line();
+
 				tokenizer->advance();
 
 				Vector<Node *> args;
@@ -3327,8 +3330,14 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
 					return;
 				}
 
+#ifdef DEBUG_ENABLED
+				// Mark as safe, let type check mark as unsafe if needed
+				_mark_line_as_safe(assert_line);
+				_reduce_node_type(args[0]);
+#endif
 				AssertNode *an = alloc_node<AssertNode>();
 				an->condition = _reduce_expression(args[0], p_static);
+				an->line = assert_line;
 
 				if (args.size() == 2) {
 					an->message = _reduce_expression(args[1], p_static);