Browse Source

Fix duplicated lines in GDScript bytecode

Fixes #26789
Bojidar Marinov 6 năm trước cách đây
mục cha
commit
b64f9f03f8

+ 1 - 1
main/tests/test_gdscript.cpp

@@ -563,7 +563,7 @@ static void _disassemble_class(const Ref<GDScript> &p_class, const Vector<String
 				case GDScriptFunction::OPCODE_OPERATOR: {
 
 					int op = code[ip + 1];
-					txt += "op ";
+					txt += " op ";
 
 					String opname = Variant::get_operator_name(Variant::Operator(op));
 

+ 0 - 5
modules/gdscript/gdscript_compiler.cpp

@@ -1396,11 +1396,6 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Blo
 
 					case GDScriptParser::ControlFlowNode::CF_IF: {
 
-#ifdef DEBUG_ENABLED
-						codegen.opcodes.push_back(GDScriptFunction::OPCODE_LINE);
-						codegen.opcodes.push_back(cf->line);
-						codegen.current_line = cf->line;
-#endif
 						int ret2 = _parse_expression(codegen, cf->arguments[0], p_stack_level, false);
 						if (ret2 < 0)
 							return ERR_PARSE_ERROR;

+ 3 - 1
modules/gdscript/gdscript_parser.cpp

@@ -2741,6 +2741,8 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
 			} break;
 			case GDScriptTokenizer::TK_NEWLINE: {
 
+				int line = tokenizer->get_token_line();
+
 				if (!_parse_newline()) {
 					if (!error_set) {
 						p_block->end_line = tokenizer->get_token_line();
@@ -2750,7 +2752,7 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
 				}
 
 				NewLineNode *nl2 = alloc_node<NewLineNode>();
-				nl2->line = tokenizer->get_token_line();
+				nl2->line = line;
 				p_block->statements.push_back(nl2);
 
 			} break;