Describe the bug
The type checker crashes when parsing the below code in strict mode in VSCode 1.52.1, Pylance v2020.12.2.
To Reproduce
See code example below. Can't seem to make a trigger snippet without the dependency. ufoLib2.Font.open annotates path with os.PathLike because I didn't know you actually had to say os.PathLike[str]??? Fixing that seems to fix the crash.
Expected behavior
No crash.
Screenshots or Code
Install dep with pip install ufoLib2==0.10.0.
from __future__ import annotations
import os
from dataclasses import dataclass
from typing import Union
from ufoLib2 import Font
@dataclass
class A:
sources: list[Font]
@classmethod
def from_ufo_paths(cls, paths: list[Union[str, os.PathLike[str]]]) -> A:
return cls(sources=[Font.open(path) for path in paths])
VS Code extension or command-line
VS Code extension v2020.12.2.
Additional context
Crash output:
[Error - 20:48:42] An internal error occurred while type checking file "/tmp/aaa.py": Error: Debug Failure. False expression.
at verifyTypeArgumentsAssignable (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15230:13)
at canAssignClassToProtocol (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:14752:20)
at canAssignClass (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:14948:20)
at canAssignType (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15967:22)
at callback (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15804:25)
at forEach (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeUtils.ts:176:17)
at Array.forEach (<anonymous>)
at Object.doForEachSubtype (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeUtils.ts:175:27)
at canAssignType (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15800:17)
at /[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15715:22
[Error - 20:48:42] Error performing analysis: Error: Debug Failure. False expression.
at verifyTypeArgumentsAssignable (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15230:13)
at canAssignClassToProtocol (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:14752:20)
at canAssignClass (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:14948:20)
at canAssignType (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15967:22)
at callback (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15804:25)
at forEach (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeUtils.ts:176:17)
at Array.forEach (<anonymous>)
at Object.doForEachSubtype (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeUtils.ts:175:27)
at canAssignType (/[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15800:17)
at /[...]/.vscode/extensions/ms-python.vscode-pylance-2020.12.2/dist/pyright-internal/src/analyzer/typeEvaluator.ts:15715:22
[Error - 20:48:42] Request textDocument/semanticTokens/full/delta failed.
Message: Request textDocument/semanticTokens/full/delta failed unexpectedly without providing any details.
Code: -32603
Thanks for the bug report and the clear repro steps. This will be fixed in the next release.
This is now addressed in Pyright 1.1.96, which I just published. It will also be in the next published release of Pylance.
Most helpful comment
Thanks for the bug report and the clear repro steps. This will be fixed in the next release.