diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 2fbcf5791..448323209 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -14521,15 +14521,21 @@ export function createTypeEvaluator( const builtInIteratorType = getTypingType(node, isAsync ? 'AsyncGenerator' : 'Generator'); const expectedEntryType = getExpectedEntryTypeForIterable(node, builtInIteratorType, inferenceContext); - const elementTypeResult = getElementTypeFromComprehension(node, flags, expectedEntryType); + const elementTypeResult = getElementTypeFromComprehension( + node, + flags | EvaluatorFlags.StripLiteralTypeForTuple, + expectedEntryType + ); + if (elementTypeResult.isIncomplete) { isIncomplete = true; } + if (elementTypeResult.typeErrors) { typeErrors = true; } - let elementType = elementTypeResult.type; + let elementType = elementTypeResult.type; if (!expectedEntryType || !containsLiteralType(expectedEntryType)) { elementType = stripLiteralValue(elementType); } diff --git a/packages/pyright-internal/src/tests/samples/generator14.py b/packages/pyright-internal/src/tests/samples/generator14.py index 6b4c6e34a..65df1d3cb 100644 --- a/packages/pyright-internal/src/tests/samples/generator14.py +++ b/packages/pyright-internal/src/tests/samples/generator14.py @@ -18,7 +18,7 @@ async def main() -> None: reveal_type(v4, expected_text="AsyncGenerator[int, None]") v5 = ((0, await foo()) for _ in [1, 2]) - reveal_type(v5, expected_text="AsyncGenerator[tuple[Literal[0], int], None]") + reveal_type(v5, expected_text="AsyncGenerator[tuple[int, int], None]") v6 = (x for x in [1, 2] if (x, await foo())) reveal_type(v6, expected_text="AsyncGenerator[int, None]")