Closed
Description
Type checking this program causes a crash during serialization of x
:
from typing import TypeVar
T = TypeVar('T')
class C:
@classmethod
def f(cls, x: T) -> T: ...
x = C.f
Here's the traceback:
Traceback (most recent call last):
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/Users/jukka/src/mypy/mypy/__main__.py", line 12, in <module>
main(None, sys.stdout, sys.stderr)
File "/Users/jukka/src/mypy/mypy/main.py", line 89, in main
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "/Users/jukka/src/mypy/mypy/build.py", line 167, in build
sources, options, alt_lib_path, flush_errors, fscache, stdout, stderr, extra_plugins
File "/Users/jukka/src/mypy/mypy/build.py", line 235, in _build
graph = dispatch(sources, manager, stdout)
File "/Users/jukka/src/mypy/mypy/build.py", line 2620, in dispatch
process_graph(graph, manager)
File "/Users/jukka/src/mypy/mypy/build.py", line 2929, in process_graph
process_stale_scc(graph, scc, manager)
File "/Users/jukka/src/mypy/mypy/build.py", line 3047, in process_stale_scc
graph[id].write_cache()
File "/Users/jukka/src/mypy/mypy/build.py", line 2244, in write_cache
self.manager)
File "/Users/jukka/src/mypy/mypy/build.py", line 1410, in write_cache
data = tree.serialize()
File "/Users/jukka/src/mypy/mypy/nodes.py", line 302, in serialize
'names': self.names.serialize(self._fullname),
File "/Users/jukka/src/mypy/mypy/nodes.py", line 3083, in serialize
data[key] = value.serialize(fullname, key)
File "/Users/jukka/src/mypy/mypy/nodes.py", line 3021, in serialize
data['node'] = self.node.serialize()
File "/Users/jukka/src/mypy/mypy/nodes.py", line 882, in serialize
'type': None if self.type is None else self.type.serialize(),
File "/Users/jukka/src/mypy/mypy/types.py", line 1218, in serialize
'arg_types': [t.serialize() for t in self.arg_types],
File "/Users/jukka/src/mypy/mypy/types.py", line 1218, in <listcomp>
'arg_types': [t.serialize() for t in self.arg_types],
File "/Users/jukka/src/mypy/mypy/types.py", line 885, in serialize
assert not self.id.is_meta_var()
AssertionError
This is a regression introduced in #8021.
cc @ilevkivskyi