MCPcopy Index your code
hub / github.com/python/mypy / visit_name_expr

Method visit_name_expr

mypy/partially_defined.py:639–666  ·  view source on GitHub ↗
(self, o: NameExpr)

Source from the content-addressed store, hash-verified

637 super().visit_starred_pattern(o)
638
639 def visit_name_expr(self, o: NameExpr) -> None:
640 if o.name in self.builtins and self.tracker.in_scope(ScopeType.Global):
641 return
642 if (
643 self.tracker.is_possibly_undefined(o.name)
644 and self.tracker.in_finally == self.tracker.disable_branch_skip
645 ):
646 # A variable is only defined in some branches.
647 self.variable_may_be_undefined(o.name, o)
648 # We don't want to report the error on the same variable multiple times.
649 self.tracker.record_definition(o.name)
650 elif self.tracker.is_defined_in_different_branch(o.name):
651 # A variable is defined in one branch but used in a different branch.
652 if self.loops or self.try_depth > 0:
653 # If we're in a loop or in a try, we can't be sure that this variable
654 # is undefined. Report it as "may be undefined".
655 self.variable_may_be_undefined(o.name, o)
656 else:
657 self.var_used_before_def(o.name, o)
658 elif self.tracker.is_undefined(o.name):
659 # A variable is undefined. It could be due to two things:
660 # 1. A variable is just totally undefined
661 # 2. The variable is defined later in the code.
662 # Case (1) will be caught by semantic analyzer. Case (2) is a forward ref that should
663 # be caught by this visitor. Save the ref for later, so that if we see a definition,
664 # we know it's a used-before-definition scenario.
665 self.tracker.record_undefined_ref(o)
666 super().visit_name_expr(o)
667
668 def visit_with_stmt(self, o: WithStmt) -> None:
669 for expr, idx in zip(o.expr, o.target):

Callers

nothing calls this directly

Calls 8

var_used_before_defMethod · 0.95
in_scopeMethod · 0.80
is_possibly_undefinedMethod · 0.45
record_definitionMethod · 0.45
is_undefinedMethod · 0.45
record_undefined_refMethod · 0.45

Tested by

no test coverage detected