diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index e712c51753d5..32fd534779a6 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -4871,7 +4871,9 @@ export function createTypeEvaluator( } if (isTypeVar(type)) { - return true; + if (type.props?.specialForm || type.props?.typeAliasInfo) { + return true; + } } // Exempts class types that are created by calling NewType, NamedTuple, etc. diff --git a/packages/pyright-internal/src/tests/samples/annotations1.py b/packages/pyright-internal/src/tests/samples/annotations1.py index f9205bb0fcaf..1ef5a03b505b 100644 --- a/packages/pyright-internal/src/tests/samples/annotations1.py +++ b/packages/pyright-internal/src/tests/samples/annotations1.py @@ -147,3 +147,15 @@ class ClassJ: # This should generate an error because format strings aren't allowed. x13: f"int" + + +class A: + def method1(self): + # This should result in an error. + x: self + + @classmethod + def method2(cls): + # This should result in an error. + x: cls + diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 578fbc706b4a..43bd8c15bec9 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -978,7 +978,7 @@ test('FunctionMember2', () => { test('Annotations1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['annotations1.py']); - TestUtils.validateResults(analysisResults, 19); + TestUtils.validateResults(analysisResults, 21); }); test('Annotations2', () => {