Skip to content

Commit 4bbb618

Browse files
committed
ajout du correctif autour de la fonction visit_class_def
1 parent 2b1bba2 commit 4bbb618

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

mypy/semanal.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)