浏览代码

shadowed var warning in nested block bug fix

Fix: #38552
(cherry picked from commit 79eee93b9a24b377a57ca034b21ea30fbf91eead)
Thakee Nathees 5 年之前
父节点
当前提交
d13f46bc41
共有 1 个文件被更改,包括 5 次插入11 次删除
  1. 5 11
      modules/gdscript/gdscript_parser.cpp

+ 5 - 11
modules/gdscript/gdscript_parser.cpp

@@ -8054,17 +8054,6 @@ void GDScriptParser::_check_function_types(FunctionNode *p_function) {
 		p_function->return_type.has_type = false;
 		p_function->return_type.may_yield = true;
 	}
-
-#ifdef DEBUG_ENABLED
-	for (Map<StringName, LocalVarNode *>::Element *E = p_function->body->variables.front(); E; E = E->next()) {
-		LocalVarNode *lv = E->get();
-		for (int i = 0; i < current_class->variables.size(); i++) {
-			if (current_class->variables[i].identifier == lv->name) {
-				_add_warning(GDScriptWarning::SHADOWED_VARIABLE, lv->line, lv->name, itos(current_class->variables[i].line));
-			}
-		}
-	}
-#endif // DEBUG_ENABLED
 }
 
 void GDScriptParser::_check_class_blocks_types(ClassNode *p_class) {
@@ -8172,6 +8161,11 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) {
 					if (lv->datatype.has_type && assign_type.may_yield && lv->assign->type == Node::TYPE_OPERATOR) {
 						_add_warning(GDScriptWarning::FUNCTION_MAY_YIELD, lv->line, _find_function_name(static_cast<OperatorNode *>(lv->assign)));
 					}
+					for (int i = 0; i < current_class->variables.size(); i++) {
+						if (current_class->variables[i].identifier == lv->name) {
+							_add_warning(GDScriptWarning::SHADOWED_VARIABLE, lv->line, lv->name, itos(current_class->variables[i].line));
+						}
+					}
 #endif // DEBUG_ENABLED
 
 					if (!_is_type_compatible(lv->datatype, assign_type)) {