diff --git a/packages/pyright-internal/src/analyzer/types.ts b/packages/pyright-internal/src/analyzer/types.ts index 924b2302b97b..afa1d7b1d2df 100644 --- a/packages/pyright-internal/src/analyzer/types.ts +++ b/packages/pyright-internal/src/analyzer/types.ts @@ -825,9 +825,7 @@ export namespace ClassType { newClassType.includeSubclasses = true; } - newClassType.tupleTypeArguments = tupleTypeArguments?.map((t) => - isNever(t.type) ? { type: UnknownType.create(), isUnbounded: t.isUnbounded, isOptional: t.isOptional } : t - ); + newClassType.tupleTypeArguments = tupleTypeArguments ? [...tupleTypeArguments] : undefined; if (isEmptyContainer !== undefined) { newClassType.isEmptyContainer = isEmptyContainer; diff --git a/packages/pyright-internal/src/tests/samples/tuple1.py b/packages/pyright-internal/src/tests/samples/tuple1.py index b20a1edba3ae..fdfdfa843a21 100644 --- a/packages/pyright-internal/src/tests/samples/tuple1.py +++ b/packages/pyright-internal/src/tests/samples/tuple1.py @@ -1,7 +1,8 @@ # This sample file tests various aspects of type analysis for tuples. import os -from typing import Any, Callable +from typing import Any, Callable, Never + from typing_extensions import ( # pyright: ignore[reportMissingModuleSource] TypeVarTuple, Unpack, @@ -270,3 +271,13 @@ def func19(a: tuple[int, ...], b: tuple[int, *tuple[int, ...]]): # This should generate an error. b5: tuple[int, int, *tuple[int, ...]] = b + + +def func20(v: tuple[Never]): + # This should generate an error. + x1: tuple[Never] = (1,) + + # This should generate an error. + x2: tuple[Never] = () + + x3: tuple[Never] = v diff --git a/packages/pyright-internal/src/tests/typeEvaluator8.test.ts b/packages/pyright-internal/src/tests/typeEvaluator8.test.ts index 686896c166ee..2ecba0db71c6 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator8.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator8.test.ts @@ -440,7 +440,7 @@ test('Optional2', () => { test('Tuple1', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['tuple1.py']); - TestUtils.validateResults(analysisResults, 24); + TestUtils.validateResults(analysisResults, 26); }); test('Tuple2', () => {