@@ -1763,7 +1763,6 @@ def check_decorated_function_is_method(self, decorator: str, context: Context) -
17631763 #
17641764 # Classes
17651765 #
1766-
17671766 def visit_class_def (self , defn : ClassDef ) -> None :
17681767 self .statement = defn
17691768 self .incomplete_type_stack .append (not defn .info )
@@ -1773,10 +1772,31 @@ def visit_class_def(self, defn: ClassDef) -> None:
17731772 self .mark_incomplete (defn .name , defn )
17741773 return
17751774
1776- self .analyze_class (defn )
1775+ # --- PATCH START ---
1776+ # If the class is defined inside a function, skip that function's locals
1777+ if self .scope .active_function () is not None :
1778+ with self .scope .without_function_locals ():
1779+ self .analyze_class (defn )
1780+ else :
1781+ self .analyze_class (defn )
1782+ # --- PATCH END ---
1783+
17771784 self .pop_type_args (defn .type_args )
17781785 self .incomplete_type_stack .pop ()
17791786
1787+ # def visit_class_def(self, defn: ClassDef) -> None:
1788+ # self.statement = defn
1789+ # self.incomplete_type_stack.append(not defn.info)
1790+ # namespace = self.qualified_name(defn.name)
1791+ # with self.tvar_scope_frame(self.tvar_scope.class_frame(namespace)):
1792+ # if self.push_type_args(defn.type_args, defn) is None:
1793+ # self.mark_incomplete(defn.name, defn)
1794+ # return
1795+
1796+ # self.analyze_class(defn)
1797+ # self.pop_type_args(defn.type_args)
1798+ # self.incomplete_type_stack.pop()
1799+
17801800 def push_type_args (
17811801 self , type_args : list [TypeParam ] | None , context : Context
17821802 ) -> list [tuple [str , TypeVarLikeExpr ]] | None :
0 commit comments