Skip to content

Commit 8db9ce5

Browse files
authored
New semantic analyzer: Report undefined names in function types (#6479)
Fixes #6425 The idea is straightforward (and the same as for assignments), don't store analyzed type if there are incomplete refs encountered. Daemon support is blocked on this since we depend on reprocessing targets with errors
1 parent 89b9154 commit 8db9ce5

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

mypy/newsemanal/semanal.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,11 @@ def _visit_func_def(self, defn: FuncDef) -> None:
541541
# Signature must be analyzed in the surrounding scope so that
542542
# class-level imported names and type variables are in scope.
543543
analyzer = self.type_analyzer()
544-
defn.type = analyzer.visit_callable_type(defn.type, nested=False)
544+
tag = self.track_incomplete_refs()
545+
result = analyzer.visit_callable_type(defn.type, nested=False)
546+
if self.found_incomplete_ref(tag):
547+
return
548+
defn.type = result
545549
self.add_type_alias_deps(analyzer.aliases_used)
546550
self.check_function_signature(defn)
547551
if isinstance(defn, FuncDef):

test-data/unit/check-newsemanal.test

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,3 +1702,7 @@ from typing import Tuple
17021702
c: C
17031703
class C(Tuple[int, str]):
17041704
def __init__(self) -> None: pass
1705+
1706+
[case testNewAnalyzerFunctionError]
1707+
def f(x: asdf) -> None: # E: Name 'asdf' is not defined
1708+
pass

0 commit comments

Comments
 (0)