diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index bc4be4da36fd..02f51b11577d 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -12555,12 +12555,15 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } if (entryInferenceContext && !valueTypeResult.typeErrors) { - valueTypeResult.type = - inferTypeArgFromExpectedEntryType( - entryInferenceContext, - [valueTypeResult.type], - !isValueTypeInvariant - ) ?? valueTypeResult.type; + const fromExpectedType = inferTypeArgFromExpectedEntryType( + entryInferenceContext, + [valueTypeResult.type], + !isValueTypeInvariant + ); + + if (fromExpectedType) { + valueTypeResult = { ...valueTypeResult, type: fromExpectedType }; + } } if (expectedDiagAddendum && valueTypeResult.expectedTypeDiagAddendum) { @@ -12593,19 +12596,22 @@ export function createTypeEvaluator(importLookup: ImportLookup, evaluatorOptions } const entryInferenceContext = makeInferenceContext(expectedType); - const unexpandedTypeResult = getTypeOfExpression( + let unexpandedTypeResult = getTypeOfExpression( entryNode.expandExpression, /* flags */ undefined, entryInferenceContext ); if (entryInferenceContext && !unexpandedTypeResult.typeErrors) { - unexpandedTypeResult.type = - inferTypeArgFromExpectedEntryType( - entryInferenceContext, - [unexpandedTypeResult.type], - !isValueTypeInvariant - ) ?? unexpandedTypeResult.type; + const fromExpectedType = inferTypeArgFromExpectedEntryType( + entryInferenceContext, + [unexpandedTypeResult.type], + !isValueTypeInvariant + ); + + if (fromExpectedType) { + unexpandedTypeResult = { ...unexpandedTypeResult, type: fromExpectedType }; + } } if (unexpandedTypeResult.isIncomplete) {