Skip to content
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ajout du correctif autour de la fonction visit_class_def
  • Loading branch information
ines-bg committed Dec 1, 2025
commit 4bbb618200bb511d9bd00ef6eaca2c16f3eddf71
24 changes: 22 additions & 2 deletions mypy/semanal.py
Original file line number Diff line number Diff line change
Expand Up @@ -1763,7 +1763,6 @@ def check_decorated_function_is_method(self, decorator: str, context: Context) -
#
# Classes
#

def visit_class_def(self, defn: ClassDef) -> None:
self.statement = defn
self.incomplete_type_stack.append(not defn.info)
Expand All @@ -1773,10 +1772,31 @@ def visit_class_def(self, defn: ClassDef) -> None:
self.mark_incomplete(defn.name, defn)
return

self.analyze_class(defn)
# --- PATCH START ---
# If the class is defined inside a function, skip that function's locals
if self.scope.active_function() is not None:
with self.scope.without_function_locals():
self.analyze_class(defn)
else:
self.analyze_class(defn)
# --- PATCH END ---

self.pop_type_args(defn.type_args)
self.incomplete_type_stack.pop()

# def visit_class_def(self, defn: ClassDef) -> None:
# self.statement = defn
# self.incomplete_type_stack.append(not defn.info)
# namespace = self.qualified_name(defn.name)
# with self.tvar_scope_frame(self.tvar_scope.class_frame(namespace)):
# if self.push_type_args(defn.type_args, defn) is None:
# self.mark_incomplete(defn.name, defn)
# return

# self.analyze_class(defn)
# self.pop_type_args(defn.type_args)
# self.incomplete_type_stack.pop()

def push_type_args(
self, type_args: list[TypeParam] | None, context: Context
) -> list[tuple[str, TypeVarLikeExpr]] | None:
Expand Down