From ba564b81f07b9b57b3bb74ec2843a7e368a0312c Mon Sep 17 00:00:00 2001 From: Isabel Duan Date: Thu, 18 Jul 2024 11:31:34 -0700 Subject: [PATCH] add unknowntype to getConstraintOfTypeParameter --- src/compiler/checker.ts | 5 +- ...xpressionGenericIntersectionNoCrash1.types | 8 +- ...xpressionGenericIntersectionNoCrash2.types | 8 +- .../argumentsReferenceInFunction1_Js.types | 8 +- ...FakeFlatNoCrashInferenceDeclarations.types | 20 +- .../reference/arrayFlatNoCrashInference.types | 12 +- ...rrayFlatNoCrashInferenceDeclarations.types | 12 +- .../reference/arrayLiteralInference.types | 12 +- .../assertionFunctionWildcardImport2.types | 16 +- ...tionFunctionsCanNarrowByDiscriminant.types | 12 +- .../reference/assertionTypePredicates1.types | 24 +- ...syncFunctionContextuallyTypedReturns.types | 48 +- .../asyncFunctionsAndStrictNullChecks.types | 36 +- ...syncGeneratorGenericNonWrappedReturn.types | 4 +- .../reference/awaitedTypeStrictNull.types | 52 +- .../baselines/reference/bestChoiceType.types | 24 +- ...ngPatternCannotBeOnlyInferenceSource.types | 20 +- .../reference/bivariantInferences.types | 12 +- tests/baselines/reference/callChain.3.types | 100 +- tests/baselines/reference/callChain.types | 16 +- .../reference/callChainInference.types | 20 +- .../checkExportsObjectAssignProperty.types | 80 +- ...ExportsObjectAssignPrototypeProperty.types | 40 +- .../reference/checkObjectDefineProperty.types | 48 +- .../checkOtherObjectAssignProperty.types | 48 +- .../reference/circularBaseConstraint.types | 4 +- .../circularContextualMappedType.types | 20 +- .../circularContextualReturnType.types | 16 +- .../circularReferenceInReturnType.types | 28 +- .../circularReferenceInReturnType2.types | 16 +- ...arTypeArgumentsLocalAndOuterNoCrash1.types | 4 +- ...lySimplifyingConditionalTypesNoCrash.types | 4 +- ...MemberCalledTheSameAsItsOwnTypeParam.types | 8 +- .../classFieldSuperAccessibleJs2.types | 8 +- ...lParameterWithinItsOwnBaseExpression.types | 12 +- .../coAndContraVariantInferences.types | 24 +- .../coAndContraVariantInferences2.types | 56 +- .../coAndContraVariantInferences3.types | 28 +- .../coAndContraVariantInferences4.types | 12 +- .../coAndContraVariantInferences6.types | 8 +- .../coAndContraVariantInferences8.types | 16 +- ...enthesizedAssertionInReturnStatement.types | 8 +- ...nthesizedAssertionInReturnStatement2.types | 8 +- ...ndexesOfIntersectionsAreInferencable.types | 8 +- ...alTypeAssignabilityWhenDeferred.errors.txt | 4 +- ...itionalTypeAssignabilityWhenDeferred.types | 32 +- ...lTypeRelaxingConstraintAssignability.types | 8 +- .../reference/conditionalTypes1.errors.txt | 2 - .../baselines/reference/conditionalTypes1.js | 16 +- .../reference/conditionalTypes1.types | 120 +- .../reference/conditionalTypes2.errors.txt | 4 - .../reference/conditionalTypes2.types | 72 +- .../conditionalTypesSimplifyWhenTrivial.types | 72 +- .../baselines/reference/constAssertions.types | 8 +- .../contextSensitiveReturnTypeInference.types | 24 +- ...xtualComputedNonBindablePropertyType.types | 16 +- ...contextualOverloadListFromArrayUnion.types | 24 +- .../contextualSignatureInstantiation4.types | 40 +- .../reference/contextualTypeCaching.types | 8 +- .../contextualTypeSelfReferencing.types | 28 +- .../contextualTypingOfOptionalMembers.types | 32 +- ...urnStatementWithReturnTypeAnnotation.types | 8 +- ...TypeAsyncFunctionReturnTypeFromUnion.types | 48 +- ...allyTypeGeneratorReturnTypeFromUnion.types | 8 +- .../contextuallyTypedBooleanLiterals.types | 28 +- .../contextuallyTypedIifeStrict.types | 8 +- ...ty(exactoptionalpropertytypes=false).types | 12 +- ...rty(exactoptionalpropertytypes=true).types | 12 +- ...allyTypedParametersWithInitializers1.types | 32 +- ...allyTypedParametersWithInitializers2.types | 8 +- ...allyTypedParametersWithInitializers3.types | 8 +- ...allyTypedParametersWithInitializers4.types | 8 +- .../contravariantInferenceAndTypeGuard.types | 24 +- ...ntOnlyInferenceFromAnnotatedFunction.types | 8 +- ...OnlyInferenceFromAnnotatedFunctionJs.types | 8 +- ...erenceWithAnnotatedOptionalParameter.types | 12 +- ...enceWithAnnotatedOptionalParameterJs.types | 12 +- .../contravariantTypeAliasInference.types | 20 +- .../reference/controlFlowAliasing.types | 12 +- .../controlFlowDestructuringParameters.types | 8 +- .../reference/controlFlowGenericTypes.types | 36 +- ...lFlowInstanceofWithSymbolHasInstance.types | 4 +- .../reference/controlFlowLoopAnalysis.types | 4 +- .../reference/controlFlowOptionalChain.types | 16 +- .../reference/controlFlowOuterVariable.types | 12 +- .../reference/controlFlowTruthiness.types | 4 +- ...ed(exactoptionalpropertytypes=false).types | 12 +- ...sed(exactoptionalpropertytypes=true).types | 12 +- ...eclarationEmitPreserveReferencedImports.js | 2 +- ...arationEmitPreserveReferencedImports.types | 16 +- ...rationEmitReexportedSymlinkReference.types | 12 +- ...ationEmitReexportedSymlinkReference2.types | 12 +- ...ationEmitReexportedSymlinkReference3.types | 12 +- ...RetainedAnnotationRetainsImportInOutput.js | 2 +- ...ainedAnnotationRetainsImportInOutput.types | 20 +- ...clarationEmitReusesLambdaParameterNodes.js | 2 +- ...rationEmitReusesLambdaParameterNodes.types | 12 +- ...rationEmitTopLevelNodeFromCrossFile2.types | 4 +- ...itUsingAlternativeContainingModules1.types | 44 +- ...itUsingAlternativeContainingModules2.types | 52 +- .../declarationEmitUsingTypeAlias2.types | 12 +- .../reference/deferredConditionalTypes.types | 3 + .../dependentDestructuredVariables.types | 20 +- ...tructuredVariablesFromNestedPatterns.types | 32 +- .../reference/destructuringTuple.types | 16 +- ...discriminantNarrowingCouldBeCircular.types | 20 +- ...y2(exactoptionalpropertytypes=false).types | 16 +- ...ty2(exactoptionalpropertytypes=true).types | 16 +- .../discriminatedUnionInference.types | 12 +- .../reference/discriminatedUnionTypes2.types | 8 +- .../reference/elementAccessChain.types | 8 +- ...jectNarrowing(strictnullchecks=true).types | 4 +- .../esNextWeakRefs_IterableWeakMap.types | 8 +- .../reference/evolvingArrayTypeInAssert.types | 8 +- .../expressionWithJSDocTypeArguments.types | 36 +- .../flatArrayNoExcessiveStackDepth.errors.txt | 8 +- .../flatArrayNoExcessiveStackDepth.types | 12 +- .../reference/generatorImplicitAny.types | 12 +- .../generatorReturnContextualType.types | 32 +- .../generatorReturnTypeInference.types | 20 +- .../generatorYieldContextualType.types | 20 +- ...genericCallInferenceConditionalType1.types | 8 +- ...allInferenceWithGenericLocalFunction.types | 48 +- ...allOnMemberReturningClosedOverObject.types | 72 +- ...thinOwnBodyCastTypeParameterIdentity.types | 44 +- .../reference/genericContextualTypes1.js | 4 +- .../reference/genericContextualTypes1.types | 220 +-- .../reference/genericContextualTypes2.types | 16 +- .../reference/genericContextualTypes3.types | 16 +- .../genericFunctionInference1.errors.txt | 4 +- .../reference/genericFunctionInference1.types | 1000 ++++++------ .../reference/genericFunctionParameters.types | 48 +- .../genericFunctionsNotContextSensitive.types | 16 +- ...ccessMethodIntersectionCanBeAccessed.types | 8 +- .../reference/genericObjectRest.types | 4 +- .../reference/genericRestParameters1.types | 92 +- .../reference/genericRestParameters3.types | 20 +- ...UnboundedTypeParamAssignability.errors.txt | 2 - ...nericUnboundedTypeParamAssignability.types | 12 +- ...NoConstraintComparableWithCurlyCurly.types | 4 +- ...cMappedTypeIntersectionAssignability.types | 4 +- .../reference/inKeywordAndUnknown.types | 8 +- ...inKeywordTypeguard(strict=true).errors.txt | 1 - .../inKeywordTypeguard(strict=true).types | 8 +- .../indexSignatureAndMappedType.errors.txt | 1 - .../indexSignatureAndMappedType.types | 12 +- .../reference/indexSignatures1.types | 16 +- .../indexedAccessAndNullableNarrowing.types | 4 +- .../indexedAccessNormalization.types | 8 +- .../indexedAccessTypeConstraints.types | 4 +- .../reference/indexingTypesWithNever.types | 8 +- .../reference/inferFromBindingPattern.types | 48 +- ...inferFromGenericFunctionReturnTypes3.types | 144 +- .../inferFromNestedSameShapeTuple.types | 16 +- ...yWithContextSensitiveReturnStatement.types | 8 +- .../reference/inferTypePredicates.types | 76 +- .../reference/inferTypes1.errors.txt | 1 - tests/baselines/reference/inferTypes2.js | 2 +- tests/baselines/reference/inferTypes2.types | 28 +- .../reference/inferTypesWithExtends1.js | 4 +- .../reference/inferTypesWithExtends1.types | 24 +- .../reference/inferenceAndHKTs.types | 12 +- .../inferenceDoesNotAddUndefinedOrNull.types | 44 +- .../inferenceFromIncompleteSource.types | 8 +- ...eOfNullableObjectTypesWithCommonBase.types | 68 +- .../inferenceOptionalProperties.types | 12 +- .../inferenceOptionalPropertiesStrict.types | 12 +- ...eOptionalPropertiesToIndexSignatures.types | 36 +- .../reference/infiniteConstraints.errors.txt | 7 +- .../instantiateContextualTypes.types | 100 +- .../instantiationExpressionErrors.errors.txt | 16 +- .../instantiationExpressionErrors.js | 34 +- .../instantiationExpressionErrors.types | 348 ++--- .../instantiationExpressions.errors.txt | 8 +- .../reference/instantiationExpressions.types | 288 ++-- .../interfaceExtendsObjectIntersection.types | 48 +- ...rfaceExtendsObjectIntersectionErrors.types | 24 +- .../reference/intersectionNarrowing.types | 16 +- .../intersectionSatisfiesConstraint.types | 8 +- .../intersectionTypeInference3.types | 24 +- .../intersectionWithConflictingPrivates.types | 8 +- .../intersectionWithUnionConstraint.types | 4 +- .../reference/intraExpressionInferences.js | 2 +- .../reference/intraExpressionInferences.types | 188 +-- .../intraExpressionInferencesJsx.types | 16 +- .../isolatedDeclarationErrorsObjects.types | 8 +- .../isomorphicMappedTypeInference.js | 2 +- .../isomorphicMappedTypeInference.types | 220 +-- ...jsDeclarationsJSDocRedirectedLookups.types | 8 +- .../jsFileImportPreservedWhenUsed.types | 12 +- .../jsdocArrayObjectPromiseImplicitAny.types | 16 +- ...jsdocArrayObjectPromiseNoImplicitAny.types | 16 +- .../reference/jsdocTemplateTag6.types | 80 +- .../reference/jsdocTemplateTag7.types | 4 +- .../reference/jsdocTemplateTag8.types | 4 +- .../jsxChildrenGenericContextualTypes.types | 24 +- ...WithSpreadingResultOfGenericFunction.types | 20 +- ...estedSelfClosingChild(jsx=react-jsx).types | 8 +- ...edSelfClosingChild(jsx=react-jsxdev).types | 8 +- .../jsxNamespaceGlobalReexport.types | 24 +- ...paceGlobalReexportMissingAliasTarget.types | 24 +- ...xNamespaceImplicitImportJSXNamespace.types | 24 +- .../keyofAndIndexedAccess.errors.txt | 1 - .../reference/keyofAndIndexedAccess.js | 2 +- .../reference/keyofAndIndexedAccess.types | 320 ++-- .../reference/keyofAndIndexedAccess2.types | 8 +- ...teBoundAssignmentDeclarationSupport3.types | 16 +- ...teBoundAssignmentDeclarationSupport6.types | 16 +- .../reference/mapOnTupleTypes01.types | 72 +- .../reference/mapOnTupleTypes02.types | 8 +- .../reference/mappedTypeConstraints2.types | 8 +- .../mappedTypeContextualTypesApplied.types | 16 +- .../reference/mappedTypeErrors.errors.txt | 2 - .../reference/mappedTypeErrors.types | 88 +- ...GenericInstantiationPreservesInlineForm.js | 2 +- ...ericInstantiationPreservesInlineForm.types | 12 +- ...mappedTypeInferenceAliasSubstitution.types | 24 +- .../reference/mappedTypeInferenceErrors.types | 8 +- .../mappedTypeRecursiveInference2.errors.txt | 27 + .../mappedTypeRecursiveInference2.symbols | 4 - .../mappedTypeRecursiveInference2.types | 116 +- .../mappedTypeRelationships.errors.txt | 14 +- .../reference/mappedTypeRelationships.types | 116 +- tests/baselines/reference/mappedTypes1.types | 8 +- tests/baselines/reference/mappedTypes2.types | 48 +- tests/baselines/reference/mappedTypes4.types | 8 +- tests/baselines/reference/mappedTypes5.types | 4 +- .../reference/mappedTypes6.errors.txt | 3 - tests/baselines/reference/mappedTypes6.types | 16 +- .../mappedTypesAndObjects.errors.txt | 1 - .../reference/mappedTypesAndObjects.types | 12 +- .../reference/mappedTypesArraysTuples.types | 32 +- .../reference/mappedTypesGenericTuples2.types | 28 +- .../reference/multipleInferenceContexts.types | 8 +- .../reference/narrowingMutualSubtypes.types | 36 +- .../reference/narrowingNoInfer1.types | 24 +- .../reference/narrowingTypeofFunction.types | 4 +- .../reference/narrowingUnionToUnion.types | 32 +- .../nestedGenericSpreadInference.types | 20 +- .../baselines/reference/neverInference.types | 48 +- tests/baselines/reference/neverType.types | 4 +- .../reference/noCrashOnThisTypeUsage.types | 8 +- .../noExcessiveStackDepthError.types | 4 +- .../noImplicitReturnsExclusions.types | 16 +- tests/baselines/reference/noInfer.types | 56 +- .../noInferCommonPropertyCheck1.types | 24 +- .../reference/noInferRedeclaration.js | 4 +- .../reference/noInferRedeclaration.types | 20 +- .../nonInferrableTypePropagation1.types | 68 +- .../nonInferrableTypePropagation2.types | 28 +- .../nonInferrableTypePropagation3.types | 20 +- .../reference/nonNullableReduction.types | 12 +- .../reference/nonNullableTypes1.types | 8 +- .../nonPrimitiveAndTypeVariables.errors.txt | 2 - .../nonPrimitiveAndTypeVariables.types | 4 +- .../objectLiteralNormalization.types | 20 +- tests/baselines/reference/objectSpread.types | 24 +- .../observableInferenceCanBeMade.types | 8 +- ...ertyAssignableToStringIndexSignature.types | 4 +- ...TypesWhenAppropriatelyContextualized.types | 20 +- ...ticalInterfacesWithGenericSignatures.types | 18 +- .../reference/promiseTypeStrictNull.types | 1344 ++++++++--------- .../propagateNonInferrableType.types | 16 +- .../reference/propertyAccessChain.types | 8 +- .../reference/ramdaToolsNoInfinite2.types | 2 +- .../reference/reactHOCSpreadprops.types | 4 +- .../reactReadonlyHOCAssignabilityReal.types | 4 +- ...ikeDeferredInferenceAllowsAssignment.types | 8 +- .../reference/recursiveClassBaseType.types | 16 +- .../recursiveConditionalTypes.errors.txt | 1 - .../reference/recursiveConditionalTypes.types | 60 +- .../recursiveReverseMappedType.types | 12 +- .../recursiveTupleTypeInference.types | 8 +- .../reference/recursiveTypeReferences1.types | 116 +- .../restParameterTypeInstantiation.types | 12 +- .../reference/restTupleElements1.types | 80 +- .../restTuplesFromContextualTypes.types | 44 +- ...dicateIsInstantiateInContextOfTarget.types | 28 +- .../reverseMappedContravariantInference.types | 8 +- ...reverseMappedPartiallyInferableTypes.types | 48 +- .../reference/reverseMappedTupleContext.types | 8 +- ...everseMappedTypeInferenceSameSource1.types | 12 +- ...erseMappedTypeIntersectionConstraint.types | 12 +- .../reverseMappedTypeRecursiveInference.types | 8 +- .../reverseMappedUnionInference.types | 12 +- .../selfReferentialFunctionType.types | 24 +- .../reference/silentNeverPropagation.types | 16 +- ...onalWithInteriorConditionalIsRelated.types | 28 +- .../reference/spreadNonObject1.types | 8 +- .../reference/spreadObjectOrFalsy.types | 12 +- .../spreadsAndContextualTupleTypes.types | 52 +- .../reference/strictBindCallApply1.types | 428 +++--- .../reference/strictFunctionTypes1.types | 80 +- .../strictNullChecksNoWidening.types | 16 +- .../reference/strictOptionalProperties1.types | 84 +- .../reference/strictSubtypeAndNarrowing.types | 48 +- .../taggedTemplateWithoutDeclaredHelper.types | 8 +- .../reference/templateInsideCallback.js | 2 +- .../reference/templateInsideCallback.types | 8 +- .../templateLiteralConstantEvaluation.types | 8 +- .../templateLiteralTypes1.errors.txt | 1 - .../reference/templateLiteralTypes1.types | 68 +- .../reference/templateLiteralTypes2.types | 20 +- ...dexOnExistingReadonlyFieldIsNotNever.types | 4 +- .../reference/thisTypeInObjectLiterals2.types | 44 +- .../reference/thisTypeOptionalCall.types | 4 +- .../reference/truthinessPromiseCoercion.types | 16 +- .../tsxNotUsingApparentTypeOfSFC.errors.txt | 5 - .../tsxNotUsingApparentTypeOfSFC.types | 4 +- .../reference/tupleTypeInference2.types | 40 +- .../reference/typeGuardsAsAssertions.types | 20 +- .../reference/typeGuardsTypeParameters.types | 12 +- .../typeInferenceCacheInvalidation.types | 12 +- .../typeParameterConstModifiers.types | 108 +- ...eterConstModifiersReverseMappedTypes.types | 24 +- .../typePredicateFreshLiteralWidening.types | 44 +- .../typePredicateTopLevelTypeParameter.types | 16 +- ...ypePredicatesCanNarrowByDiscriminant.types | 12 +- .../reference/typePredicatesInUnion3.types | 8 +- .../typePredicatesOptionalChaining1.types | 8 +- .../typeTagWithGenericSignature.types | 8 +- .../reference/typeVariableTypeGuards.types | 4 +- ...ssignableToGenericMappedIntersection.types | 4 +- .../unionAndIntersectionInference3.types | 132 +- .../unionCallMixedTypeParameterPresence.types | 12 +- .../reference/unionOfClassCalls.types | 56 +- .../unionSignaturesWithThisParameter.types | 4 +- .../reference/unionTypeInference.types | 128 +- ...ssignmentOnGlobalAugmentationSuceeds.types | 4 +- .../reference/unknownControlFlow.types | 184 +-- ...ownLikeUnionObjectFlagsNotPropagated.types | 16 +- .../reference/unknownType1.errors.txt | 1 - tests/baselines/reference/unknownType1.types | 8 +- .../unwitnessedTypeParameterVariance.types | 4 +- .../baselines/reference/variadicTuples1.types | 100 +- .../baselines/reference/variadicTuples2.types | 40 +- .../reference/varianceAnnotations.js | 4 +- .../reference/varianceAnnotations.types | 20 +- .../reference/varianceMeasurement.types | 4 +- ...eroOrderIndexSignatureRelationsAlign.types | 16 +- ...roOrderIndexSignatureRelationsAlign2.types | 16 +- .../voidReturnIndexUnionInference.types | 12 +- .../reference/voidUndefinedReduction.types | 8 +- .../wideningWithTopLevelTypeParameter.types | 40 +- 344 files changed, 5928 insertions(+), 5920 deletions(-) create mode 100644 tests/baselines/reference/mappedTypeRecursiveInference2.errors.txt diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5e38395c32d4e..32db98ca18c08 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14535,9 +14535,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function getConstraintOfTypeParameter(typeParameter: TypeParameter): Type | undefined { - return hasNonCircularBaseConstraint(typeParameter) ? getConstraintFromTypeParameter(typeParameter) : undefined; + if (!hasNonCircularBaseConstraint(typeParameter)) return undefined; + const constraint = getConstraintFromTypeParameter(typeParameter); + return constraint === undefined && strictNullChecks ? unknownType : constraint; } - function isConstMappedType(type: MappedType, depth: number): boolean { const typeVariable = getHomomorphicTypeVariable(type); return !!typeVariable && isConstTypeVariable(typeVariable, depth); diff --git a/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash1.types b/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash1.types index a5e42e379a797..d1399780e013b 100644 --- a/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash1.types +++ b/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash1.types @@ -11,16 +11,16 @@ class ErrImpl { } declare const Err: typeof ErrImpl & (() => T); ->Err : typeof ErrImpl & (() => T) -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^ +>Err : typeof ErrImpl & (() => T) +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^ >ErrImpl : typeof ErrImpl > : ^^^^^^^^^^^^^^ type ErrAlias = typeof Err; >ErrAlias : { new (): ErrImpl; prototype: ErrImpl; } & (() => U) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Err : typeof ErrImpl & (() => T) -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^ +>Err : typeof ErrImpl & (() => T) +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^ declare const e: ErrAlias; >e : { new (): ErrImpl; prototype: ErrImpl; } & (() => number) diff --git a/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash2.types b/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash2.types index 40c1debe76ba2..f104ff54617d5 100644 --- a/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash2.types +++ b/tests/baselines/reference/aliasInstantiationExpressionGenericIntersectionNoCrash2.types @@ -11,8 +11,8 @@ declare class Class { } declare function fn(): T; ->fn : () => T -> : ^ ^^^^^^^ +>fn : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ type ClassAlias = typeof Class; @@ -24,8 +24,8 @@ type ClassAlias = typeof Class; type FnAlias = typeof fn; >FnAlias : typeof fn > : ->fn : () => T_1 -> : ^^^^^^^^^^^ +>fn : () => T_1 +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type Wat = ClassAlias & FnAlias; >Wat : Wat diff --git a/tests/baselines/reference/argumentsReferenceInFunction1_Js.types b/tests/baselines/reference/argumentsReferenceInFunction1_Js.types index 2d41b9e618782..d469dec27c375 100644 --- a/tests/baselines/reference/argumentsReferenceInFunction1_Js.types +++ b/tests/baselines/reference/argumentsReferenceInFunction1_Js.types @@ -92,12 +92,12 @@ const debuglog = function() { return format.apply(null, arguments); >format.apply(null, arguments) : string > : ^^^^^^ ->format.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>format.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >format : (f: any, ...args: any[]) => string > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >arguments : IArguments > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types b/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types index db8c33fd8d2d0..cdbdd3567e5d6 100644 --- a/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types +++ b/tests/baselines/reference/arrayFakeFlatNoCrashInferenceDeclarations.types @@ -12,8 +12,8 @@ type BadFlatArray = {obj: { > : ^^^ "recur": Arr extends ReadonlyArray ->"recur" : Arr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr)[] ? { done: InnerArr; recur: any; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]]] extends infer T ? T extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]]] ? T extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]] extends infer T_1 ? T_1 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]] ? T_1 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]] extends infer T_2 ? T_2 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]] ? T_2 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]] extends infer T_3 ? T_3 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]] ? T_3 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]] extends infer T_4 ? T_4 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]] ? T_4 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]] extends infer T_5 ? T_5 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]] ? T_5 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]] extends infer T_6 ? T_6 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]] ? T_6 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]] extends infer T_7 ? T_7 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]] ? T_7 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]] extends infer T_8 ? T_8 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]] ? T_8 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]] extends infer T_9 ? T_9 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]] ? T_9 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth] extends infer T_10 ? T_10 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth] ? T_10 extends -1 ? "done" : "recur" : never : never] : Arr -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>"recur" : Arr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: InnerArr extends readonly (infer InnerArr extends unknown)[] ? { done: InnerArr; recur: any; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]]] extends infer T ? T extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]]] ? T extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]] extends infer T_1 ? T_1 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]]] ? T_1 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]] extends infer T_2 ? T_2 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]]] ? T_2 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]] extends infer T_3 ? T_3 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]]] ? T_3 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]] extends infer T_4 ? T_4 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]]] ? T_4 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]] extends infer T_5 ? T_5 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]]] ? T_5 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]] extends infer T_6 ? T_6 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]]] ? T_6 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]] extends infer T_7 ? T_7 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]]] ? T_7 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]] extends infer T_8 ? T_8 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]]] ? T_8 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]] extends infer T_9 ? T_9 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth]] ? T_9 extends -1 ? "done" : "recur" : never : never] : InnerArr; }[[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth] extends infer T_10 ? T_10 extends [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][Depth] ? T_10 extends -1 ? "done" : "recur" : never : never] : Arr +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ? BadFlatArray >-1 : -1 @@ -29,8 +29,8 @@ type BadFlatArray = {obj: { > : ^ declare function flat( ->flat : (arr: A, depth?: D) => BadFlatArray[] -> : ^ ^^ ^^^^^^^^^ ^^^^^^ ^^ ^^ ^^^ ^^^^^ +>flat : (arr: A, depth?: D) => BadFlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^ ^^ ^^^ ^^^^^ arr: A, >arr : A @@ -43,18 +43,18 @@ declare function flat( ): BadFlatArray[] function foo(arr: T[], depth: number) { ->foo : (arr: T[], depth: number) => (T | (T extends readonly (infer InnerArr)[] ? InnerArr | (InnerArr extends readonly (infer InnerArr)[] ? any : InnerArr) : T))[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (arr: T[], depth: number) => (T | (T extends readonly (infer InnerArr extends unknown)[] ? InnerArr | (InnerArr extends readonly (infer InnerArr extends unknown)[] ? any : InnerArr) : T))[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number > : ^^^^^^ return flat(arr, depth); ->flat(arr, depth) : (T | (T extends readonly (infer InnerArr)[] ? InnerArr | (InnerArr extends readonly (infer InnerArr)[] ? any : InnerArr) : T))[] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->flat : (arr: A, depth?: D) => BadFlatArray[] -> : ^ ^^ ^^^^^^^^^ ^^^^^^ ^^ ^^ ^^^ ^^^^^ +>flat(arr, depth) : (T | (T extends readonly (infer InnerArr extends unknown)[] ? InnerArr | (InnerArr extends readonly (infer InnerArr extends unknown)[] ? any : InnerArr) : T))[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>flat : (arr: A, depth?: D) => BadFlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^ ^^ ^^^ ^^^^^ >arr : T[] > : ^^^ >depth : number diff --git a/tests/baselines/reference/arrayFlatNoCrashInference.types b/tests/baselines/reference/arrayFlatNoCrashInference.types index 8bbd51bbd00f1..2f6c15b2c9a34 100644 --- a/tests/baselines/reference/arrayFlatNoCrashInference.types +++ b/tests/baselines/reference/arrayFlatNoCrashInference.types @@ -2,8 +2,8 @@ === arrayFlatNoCrashInference.ts === function foo(arr: T[], depth: number) { ->foo : (arr: T[], depth: number) => FlatArray[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (arr: T[], depth: number) => FlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number @@ -12,12 +12,12 @@ function foo(arr: T[], depth: number) { return arr.flat(depth); >arr.flat(depth) : FlatArray[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arr.flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^ ^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arr.flat : (this: A, depth?: D | undefined) => FlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ ->flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^ ^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>flat : (this: A, depth?: D | undefined) => FlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >depth : number > : ^^^^^^ } diff --git a/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types b/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types index 05081a3f9f0cc..ebeec1f2409f3 100644 --- a/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types +++ b/tests/baselines/reference/arrayFlatNoCrashInferenceDeclarations.types @@ -2,8 +2,8 @@ === arrayFlatNoCrashInferenceDeclarations.ts === function foo(arr: T[], depth: number) { ->foo : (arr: T[], depth: number) => FlatArray[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo : (arr: T[], depth: number) => FlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ >depth : number @@ -12,12 +12,12 @@ function foo(arr: T[], depth: number) { return arr.flat(depth); >arr.flat(depth) : FlatArray[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->arr.flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^ ^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arr.flat : (this: A, depth?: D | undefined) => FlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : T[] > : ^^^ ->flat : (this: A, depth?: D | undefined) => FlatArray[] -> : ^ ^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>flat : (this: A, depth?: D | undefined) => FlatArray[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >depth : number > : ^^^^^^ } diff --git a/tests/baselines/reference/arrayLiteralInference.types b/tests/baselines/reference/arrayLiteralInference.types index 6520794bbf907..699f08e93834d 100644 --- a/tests/baselines/reference/arrayLiteralInference.types +++ b/tests/baselines/reference/arrayLiteralInference.types @@ -180,8 +180,8 @@ const appTypeStylesWithError: Map> = new Map([ // Repro from #31204 declare function foo(...args: T[]): T[]; ->foo : (...args: T[]) => T[] -> : ^ ^^^^^ ^^ ^^^^^ +>foo : (...args: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T[] > : ^^^ @@ -192,8 +192,8 @@ let b1: { x: boolean }[] = foo({ x: true }, { x: false }); > : ^^^^^^^ >foo({ x: true }, { x: false }) : ({ x: true; } | { x: false; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (...args: T[]) => T[] -> : ^ ^^^^^ ^^ ^^^^^ +>foo : (...args: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ x: true } : { x: true; } > : ^^^^^^^^^^^^ >x : true @@ -212,8 +212,8 @@ let b2: boolean[][] = foo([true], [false]); > : ^^^^^^^^^^^ >foo([true], [false]) : (true[] | false[])[] > : ^^^^^^^^^^^^^^^^^^^^ ->foo : (...args: T[]) => T[] -> : ^ ^^^^^ ^^ ^^^^^ +>foo : (...args: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[true] : true[] > : ^^^^^^ >true : true diff --git a/tests/baselines/reference/assertionFunctionWildcardImport2.types b/tests/baselines/reference/assertionFunctionWildcardImport2.types index bf742e7e4de48..adf8353b23b62 100644 --- a/tests/baselines/reference/assertionFunctionWildcardImport2.types +++ b/tests/baselines/reference/assertionFunctionWildcardImport2.types @@ -2,8 +2,8 @@ === asserts.ts === function isNonNullable(obj: T): asserts obj is NonNullable { ->isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isNonNullable : (obj: T) => asserts obj is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ @@ -33,8 +33,8 @@ function isNonNullable(obj: T): asserts obj is NonNullable { export { isNonNullable ->isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isNonNullable : (obj: T) => asserts obj is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ }; @@ -52,12 +52,12 @@ function test(obj: string | null): void { asserts.isNonNullable(obj); >asserts.isNonNullable(obj) : void > : ^^^^ ->asserts.isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^ ^^ ^^ ^^^^^ +>asserts.isNonNullable : (obj: T) => asserts obj is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >asserts : typeof asserts > : ^^^^^^^^^^^^^^ ->isNonNullable : (obj: T) => asserts obj is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isNonNullable : (obj: T) => asserts obj is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : string | null > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types b/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types index cac49b5bdf977..1a406c8fd41f7 100644 --- a/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types +++ b/tests/baselines/reference/assertionFunctionsCanNarrowByDiscriminant.types @@ -30,8 +30,8 @@ type Animal = Cat | Dog; > : ^^^^^^ declare function assertEqual(value: any, type: T): asserts value is T; ->assertEqual : (value: any, type: T) => asserts value is T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assertEqual : (value: any, type: T) => asserts value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >value : any >type : T > : ^ @@ -55,8 +55,8 @@ const animal = { type: 'cat', canMeow: true } as Animal; assertEqual(animal.type, 'cat' as const); >assertEqual(animal.type, 'cat' as const) : void > : ^^^^ ->assertEqual : (value: any, type: T) => asserts value is T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assertEqual : (value: any, type: T) => asserts value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >animal.type : "cat" | "dog" > : ^^^^^^^^^^^^^ >animal : Animal @@ -95,8 +95,8 @@ const animalOrUndef = { type: 'cat', canMeow: true } as Animal | undefined; assertEqual(animalOrUndef?.type, 'cat' as const); >assertEqual(animalOrUndef?.type, 'cat' as const) : void > : ^^^^ ->assertEqual : (value: any, type: T) => asserts value is T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assertEqual : (value: any, type: T) => asserts value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >animalOrUndef?.type : "cat" | "dog" | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >animalOrUndef : Animal | undefined diff --git a/tests/baselines/reference/assertionTypePredicates1.types b/tests/baselines/reference/assertionTypePredicates1.types index 079224ba5369b..4d823108c4bf0 100644 --- a/tests/baselines/reference/assertionTypePredicates1.types +++ b/tests/baselines/reference/assertionTypePredicates1.types @@ -36,8 +36,8 @@ declare function assertIsArrayOfStrings(value: unknown): asserts value is string > : ^^^^^^^ declare function assertDefined(value: T): asserts value is NonNullable; ->assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -262,8 +262,8 @@ function f01(x: unknown) { assertDefined(x); >assertDefined(x) : void > : ^^^^ ->assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -390,8 +390,8 @@ function f02(x: string | undefined) { assertDefined(x); >assertDefined(x) : void > : ^^^^ ->assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -445,8 +445,8 @@ namespace Debug { > : ^^^^^^^^^^^^^^^^^^ export declare function assertDefined(value: T): asserts value is NonNullable; ->assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ } @@ -528,12 +528,12 @@ function f10(x: string | undefined) { Debug.assertDefined(x); >Debug.assertDefined(x) : void > : ^^^^ ->Debug.assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>Debug.assertDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Debug : typeof Debug > : ^^^^^^^^^^^^ ->assertDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types b/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types index 19a78cded49dc..92496f3495f76 100644 --- a/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types +++ b/tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types @@ -28,12 +28,12 @@ f(v => v ? [0] : Promise.reject()); > : ^ >Promise.reject() : Promise<[0]> > : ^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ f(async v => v ? [0] : Promise.reject()); >f(async v => v ? [0] : Promise.reject()) : void @@ -54,12 +54,12 @@ f(async v => v ? [0] : Promise.reject()); > : ^ >Promise.reject() : Promise<[0]> > : ^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ declare function g(cb: (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable">): void; >g : (cb: (v: boolean) => "contextuallyTypable" | PromiseLike<"contextuallyTypable">) => void @@ -86,12 +86,12 @@ g(v => v ? "contextuallyTypable" : Promise.reject()); > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.reject() : Promise<"contextuallyTypable"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ g(async v => v ? "contextuallyTypable" : Promise.reject()); >g(async v => v ? "contextuallyTypable" : Promise.reject()) : void @@ -110,12 +110,12 @@ g(async v => v ? "contextuallyTypable" : Promise.reject()); > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.reject() : Promise<"contextuallyTypable"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ type MyCallback = (thing: string) => void; >MyCallback : MyCallback @@ -150,12 +150,12 @@ h(v => v ? (abc) => { } : Promise.reject()); > : ^^^^^^ >Promise.reject() : Promise > : ^^^^^^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ h(async v => v ? (def) => { } : Promise.reject()); >h(async v => v ? (def) => { } : Promise.reject()) : void @@ -176,12 +176,12 @@ h(async v => v ? (def) => { } : Promise.reject()); > : ^^^^^^ >Promise.reject() : Promise > : ^^^^^^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ // repro from #29196 const increment: ( diff --git a/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types b/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types index 3b804917701e1..770b908004ab6 100644 --- a/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types +++ b/tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types @@ -4,8 +4,8 @@ declare namespace Windows.Foundation { interface IPromise { then(success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; ->then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; } -> : ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : ((value: TResult) => IPromise) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult @@ -18,8 +18,8 @@ declare namespace Windows.Foundation { >progress : any then(success?: (value: TResult) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; ->then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : ((value: TResult) => IPromise) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult @@ -32,8 +32,8 @@ declare namespace Windows.Foundation { >progress : any then(success?: (value: TResult) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; ->then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : ((value: TResult) => U) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult @@ -46,8 +46,8 @@ declare namespace Windows.Foundation { >progress : any then(success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; ->then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; } -> : ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ +>then : { (success?: (value: TResult) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => IPromise, error?: (error: any) => U_1, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U_1, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ >success : ((value: TResult) => U) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult @@ -60,8 +60,8 @@ declare namespace Windows.Foundation { >progress : any done(success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void): void; ->done : (success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void -> : ^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ +>done : (success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^ >success : ((value: TResult) => any) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : TResult @@ -100,14 +100,14 @@ async function sample(promise: Windows.Foundation.IPromise) { declare function resolve1(value: T): Promise; ->resolve1 : (value: T) => Promise -> : ^ ^^ ^^ ^^^^^ +>resolve1 : (value: T) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ declare function resolve2(value: T): Windows.Foundation.IPromise; ->resolve2 : (value: T) => Windows.Foundation.IPromise -> : ^ ^^ ^^ ^^^^^ +>resolve2 : (value: T) => Windows.Foundation.IPromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ >Windows : any @@ -128,8 +128,8 @@ async function sample2(x?: number) { > : ^^^^^^^^^^^^^^^^^^ >resolve1(x) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->resolve1 : (value: T) => Promise -> : ^ ^^ ^^ ^^^^^ +>resolve1 : (value: T) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -140,8 +140,8 @@ async function sample2(x?: number) { > : ^^^^^^^^^^^^^^^^^^ >resolve2(x) : Windows.Foundation.IPromise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->resolve2 : (value: T) => Windows.Foundation.IPromise -> : ^ ^^ ^^ ^^^^^ +>resolve2 : (value: T) => Windows.Foundation.IPromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types b/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types index b42023e6c7686..0caafbac978d4 100644 --- a/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types +++ b/tests/baselines/reference/asyncGeneratorGenericNonWrappedReturn.types @@ -4,8 +4,8 @@ // #48966 export async function* test(a: T): AsyncGenerator { ->test : (a: T) => AsyncGenerator -> : ^ ^^ ^^ ^^^^^ +>test : (a: T) => AsyncGenerator +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T > : ^ diff --git a/tests/baselines/reference/awaitedTypeStrictNull.types b/tests/baselines/reference/awaitedTypeStrictNull.types index 1755b16d2e28b..fafba7935cee1 100644 --- a/tests/baselines/reference/awaitedTypeStrictNull.types +++ b/tests/baselines/reference/awaitedTypeStrictNull.types @@ -139,8 +139,8 @@ type MaybePromise = T | Promise | PromiseLike > : ^^^^^^^^^^^^^^^ declare function MaybePromise(value: T): MaybePromise; ->MaybePromise : (value: T) => MaybePromise -> : ^ ^^ ^^ ^^^^^ +>MaybePromise : (value: T) => MaybePromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -175,36 +175,36 @@ async function main() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all([ MaybePromise(1), MaybePromise('2'), MaybePromise(true), ]) : Promise<[number, string, boolean]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >[ MaybePromise(1), MaybePromise('2'), MaybePromise(true), ] : [number | Promise<1> | PromiseLike<1>, string | Promise<"2"> | PromiseLike<"2">, true | Promise | PromiseLike] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ MaybePromise(1), >MaybePromise(1) : 1 | Promise<1> | PromiseLike<1> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->MaybePromise : (value: T) => MaybePromise -> : ^ ^^ ^^ ^^^^^ +>MaybePromise : (value: T) => MaybePromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >1 : 1 > : ^ MaybePromise('2'), >MaybePromise('2') : "2" | Promise<"2"> | PromiseLike<"2"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->MaybePromise : (value: T) => MaybePromise -> : ^ ^^ ^^ ^^^^^ +>MaybePromise : (value: T) => MaybePromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'2' : "2" > : ^^^ MaybePromise(true), >MaybePromise(true) : true | Promise | PromiseLike > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->MaybePromise : (value: T) => MaybePromise -> : ^ ^^ ^^ ^^^^^ +>MaybePromise : (value: T) => MaybePromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -218,20 +218,20 @@ class Api { // Should result in `Promise` instead of `Promise>`. async post() { return this.request(); } ->post : () => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^ +>post : () => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.request() : Promise > : ^^^^^^^^^^ ->this.request : () => Promise -> : ^^^^^^^^^^^ +>this.request : () => Promise +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->request : () => Promise -> : ^^^^^^^^^^^ +>request : () => Promise +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ async request(): Promise { throw new Error(); } ->request : () => Promise -> : ^ ^^^^^^^ +>request : () => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >new Error() : Error > : ^^^^^ >Error : ErrorConstructor @@ -247,20 +247,20 @@ interface Obj { x: number } > : ^^^^^^ async function fn(): Promise { ->fn : () => Promise -> : ^ ^^^^^^^ +>fn : () => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ // Per #45924, this was failing due to incorrect inference both above and here. // Should not error. return api.post(); >api.post() : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->api.post : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>api.post : () => Promise +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >api : Api<{}> > : ^^^^^^^ ->post : () => Promise -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>post : () => Promise +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } // helps with tests where '.types' just prints out the type alias name diff --git a/tests/baselines/reference/bestChoiceType.types b/tests/baselines/reference/bestChoiceType.types index 2b0a3a974e312..b310b30b1b3a1 100644 --- a/tests/baselines/reference/bestChoiceType.types +++ b/tests/baselines/reference/bestChoiceType.types @@ -6,8 +6,8 @@ (''.match(/ /) || []).map(s => s.toLowerCase()); >(''.match(/ /) || []).map(s => s.toLowerCase()) : any[] > : ^^^^^ ->(''.match(/ /) || []).map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>(''.match(/ /) || []).map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >(''.match(/ /) || []) : RegExpMatchArray | [] > : ^^^^^^^^^^^^^^^^^^^^^ >''.match(/ /) || [] : RegExpMatchArray | [] @@ -24,8 +24,8 @@ > : ^^^^^^ >[] : [] > : ^^ ->map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >s => s.toLowerCase() : (s: any) => any > : ^ ^^^^^^^^^^^^^ >s : any @@ -71,12 +71,12 @@ function f1() { > : ^^^^^ >y.map(s => s.toLowerCase()) : any[] > : ^^^^^ ->y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >y : RegExpMatchArray | [] > : ^^^^^^^^^^^^^^^^^^^^^ ->map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >s => s.toLowerCase() : (s: any) => any > : ^ ^^^^^^^^^^^^^ >s : any @@ -123,12 +123,12 @@ function f2() { > : ^^^^^ >y.map(s => s.toLowerCase()) : any[] > : ^^^^^ ->y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >y : RegExpMatchArray | never[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >s => s.toLowerCase() : (s: any) => any > : ^ ^^^^^^^^^^^^^ >s : any diff --git a/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types b/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types index 53bac68d19430..febceebb5cebb 100644 --- a/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types +++ b/tests/baselines/reference/bindingPatternCannotBeOnlyInferenceSource.types @@ -2,28 +2,28 @@ === bindingPatternCannotBeOnlyInferenceSource.ts === declare function f(): T; ->f : () => T -> : ^ ^^^^^^^ +>f : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const {} = f(); // error (only in strictNullChecks) >f() : unknown > : ^^^^^^^ ->f : () => T -> : ^ ^^^^^^^ +>f : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const { p1 } = f(); // error >p1 : any > : ^^^ >f() : unknown > : ^^^^^^^ ->f : () => T -> : ^ ^^^^^^^ +>f : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const [] = f(); // error >f() : unknown > : ^^^^^^^ ->f : () => T -> : ^ ^^^^^^^ +>f : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const [e1, e2] = f(); // error >e1 : any @@ -32,8 +32,8 @@ const [e1, e2] = f(); // error > : ^^^ >f() : unknown > : ^^^^^^^ ->f : () => T -> : ^ ^^^^^^^ +>f : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ // Repro from #43605 type Dispatch = { (action: T): T }; diff --git a/tests/baselines/reference/bivariantInferences.types b/tests/baselines/reference/bivariantInferences.types index b291cd530e474..2b2b4ac72877d 100644 --- a/tests/baselines/reference/bivariantInferences.types +++ b/tests/baselines/reference/bivariantInferences.types @@ -5,8 +5,8 @@ interface Array { equalsShallow(this: ReadonlyArray, other: ReadonlyArray): boolean; ->equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >this : readonly T[] > : ^^^^^^^^^^^^ >other : readonly T[] @@ -26,12 +26,12 @@ let x = a.equalsShallow(b); > : ^^^^^^^ >a.equalsShallow(b) : boolean > : ^^^^^^^ ->a.equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) -> : ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^ +>a.equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^ >a : (string | number)[] | null[] | undefined[] | {}[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) -> : ^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^ +>equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^ >b : (string | number)[] | null[] | undefined[] | {}[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/callChain.3.types b/tests/baselines/reference/callChain.3.types index 64314d5a7b23b..73202d66d32fa 100644 --- a/tests/baselines/reference/callChain.3.types +++ b/tests/baselines/reference/callChain.3.types @@ -2,14 +2,14 @@ === callChain.3.ts === declare function absorb(): T; ->absorb : () => T -> : ^ ^^^^^^^ +>absorb : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ declare const a: { m?(obj: {x: T}): T } | undefined; ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >obj : { x: T; } > : ^^^^^ ^^^ >x : T @@ -20,12 +20,12 @@ const n1: number = a?.m?.({x: 12 }); // should be an error (`undefined` is not a > : ^^^^^^ >a?.m?.({x: 12 }) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a?.m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >{x: 12 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -38,32 +38,32 @@ const n2: number = a?.m?.({x: absorb()}); // likewise > : ^^^^^^ >a?.m?.({x: absorb()}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a?.m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >{x: absorb()} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >absorb() : number > : ^^^^^^ ->absorb : () => T -> : ^ ^^^^^^^ +>absorb : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const n3: number | undefined = a?.m?.({x: 12}); // should be ok >n3 : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a?.m?.({x: 12}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a?.m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >{x: 12} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -76,20 +76,20 @@ const n4: number | undefined = a?.m?.({x: absorb()}); // likewise > : ^^^^^^^^^^^^^^^^^^ >a?.m?.({x: absorb()}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a?.m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >{x: absorb()} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >absorb() : number > : ^^^^^^ ->absorb : () => T -> : ^ ^^^^^^^ +>absorb : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ // Also a test showing `!` vs `?` for good measure let t1 = a?.m?.({x: 12}); @@ -97,12 +97,12 @@ let t1 = a?.m?.({x: 12}); > : ^^^^^^^^^^^^^^^^^^ >a?.m?.({x: 12}) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a?.m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a?.m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >{x: 12} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -117,16 +117,16 @@ t1 = a!.m!({x: 12}); > : ^^^^^^^^^^^^^^^^^^ >a!.m!({x: 12}) : number > : ^^^^^^ ->a!.m! : (obj: { x: T; }) => T -> : ^ ^^ ^^ ^^^^^ ->a!.m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->a! : { m?(obj: { x: T; }): T; } -> : ^^^^^ ^^ ^^ ^^^ ^^^ ->a : { m?(obj: { x: T; }): T; } | undefined -> : ^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->m : ((obj: { x: T; }) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a!.m! : (obj: { x: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>a!.m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>a! : { m?(obj: { x: T; }): T; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>a : { m?(obj: { x: T; }): T; } | undefined +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ +>m : ((obj: { x: T; }) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >{x: 12} : { x: number; } > : ^^^^^^^^^^^^^^ >x : number diff --git a/tests/baselines/reference/callChain.types b/tests/baselines/reference/callChain.types index 88397242047fa..3dfa189114b9e 100644 --- a/tests/baselines/reference/callChain.types +++ b/tests/baselines/reference/callChain.types @@ -430,8 +430,8 @@ o3["b"]?.(1, ...[2, 3], 4).c; > : ^^^^^^^^^^^^^^^^^^ declare const o4: undefined | ((f: (a: T) => T) => T); ->o4 : ((f: (a: T) => T) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>o4 : ((f: (a: T) => T) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >f : (a: T) => T > : ^ ^^ ^^^^^ >a : T @@ -448,23 +448,23 @@ const v: number | undefined = o4?.(incr); > : ^^^^^^^^^^^^^^^^^^ >o4?.(incr) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->o4 : ((f: (a: T) => T) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>o4 : ((f: (a: T) => T) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >incr : (x: number) => number > : ^ ^^ ^^^^^ // GH#33744 declare const o5: () => undefined | (() => void); ->o5 : () => undefined | (() => void) -> : ^ ^^^^^^^ +>o5 : () => undefined | (() => void) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ o5()?.(); >o5()?.() : void | undefined > : ^^^^^^^^^^^^^^^^ >o5() : (() => void) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->o5 : () => undefined | (() => void) -> : ^ ^^^^^^^ +>o5 : () => undefined | (() => void) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ // GH#36031 o2?.b()!.toString; diff --git a/tests/baselines/reference/callChainInference.types b/tests/baselines/reference/callChainInference.types index 9e7c94a123bce..3a0f66a5e8338 100644 --- a/tests/baselines/reference/callChainInference.types +++ b/tests/baselines/reference/callChainInference.types @@ -5,8 +5,8 @@ interface Y { foo(this: T, arg: keyof T): void; ->foo : (this: T, arg: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (this: T, arg: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >this : T > : ^ >arg : keyof T @@ -32,12 +32,12 @@ if (value) { value?.foo("a"); >value?.foo("a") : void > : ^^^^ ->value?.foo : (this: T, arg: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>value?.foo : (this: T, arg: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >value : Y > : ^ ->foo : (this: T, arg: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (this: T, arg: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >"a" : "a" > : ^^^ } @@ -45,12 +45,12 @@ if (value) { value?.foo("a"); >value?.foo("a") : void | undefined > : ^^^^^^^^^^^^^^^^ ->value?.foo : ((this: T, arg: keyof T) => void) | undefined -> : ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>value?.foo : ((this: T, arg: keyof T) => void) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : Y | undefined > : ^^^^^^^^^^^^^ ->foo : ((this: T, arg: keyof T) => void) | undefined -> : ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>foo : ((this: T, arg: keyof T) => void) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >"a" : "a" > : ^^^ diff --git a/tests/baselines/reference/checkExportsObjectAssignProperty.types b/tests/baselines/reference/checkExportsObjectAssignProperty.types index 36a76a895f16d..f58e2a3d1d66f 100644 --- a/tests/baselines/reference/checkExportsObjectAssignProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignProperty.types @@ -291,12 +291,12 @@ m2.setonlyAccessor = 0; Object.defineProperty(exports, "thing", { value: 42, writable: true }); >Object.defineProperty(exports, "thing", { value: 42, writable: true }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"thing" : "thing" @@ -315,12 +315,12 @@ Object.defineProperty(exports, "thing", { value: 42, writable: true }); Object.defineProperty(exports, "readonlyProp", { value: "Smith", writable: false }); >Object.defineProperty(exports, "readonlyProp", { value: "Smith", writable: false }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"readonlyProp" : "readonlyProp" @@ -339,12 +339,12 @@ Object.defineProperty(exports, "readonlyProp", { value: "Smith", writable: false Object.defineProperty(exports, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }); >Object.defineProperty(exports, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"rwAccessors" : "rwAccessors" @@ -363,12 +363,12 @@ Object.defineProperty(exports, "rwAccessors", { get() { return 98122 }, set(_) { Object.defineProperty(exports, "readonlyAccessor", { get() { return 21.75 } }); >Object.defineProperty(exports, "readonlyAccessor", { get() { return 21.75 } }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"readonlyAccessor" : "readonlyAccessor" @@ -383,12 +383,12 @@ Object.defineProperty(exports, "readonlyAccessor", { get() { return 21.75 } }); Object.defineProperty(exports, "setonlyAccessor", { >Object.defineProperty(exports, "setonlyAccessor", { /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }}) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"setonlyAccessor" : "setonlyAccessor" @@ -425,12 +425,12 @@ Object.defineProperty(exports, "setonlyAccessor", { Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }); >Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -453,12 +453,12 @@ Object.defineProperty(module.exports, "thing", { value: "yes", writable: true }) Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable: false }); >Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable: false }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -481,12 +481,12 @@ Object.defineProperty(module.exports, "readonlyProp", { value: "Smith", writable Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }); >Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -509,12 +509,12 @@ Object.defineProperty(module.exports, "rwAccessors", { get() { return 98122 }, s Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 } }); >Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 } }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -533,12 +533,12 @@ Object.defineProperty(module.exports, "readonlyAccessor", { get() { return 21.75 Object.defineProperty(module.exports, "setonlyAccessor", { >Object.defineProperty(module.exports, "setonlyAccessor", { /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }}) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } diff --git a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types index fa8d497923586..09e5084a941f3 100644 --- a/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types +++ b/tests/baselines/reference/checkExportsObjectAssignPrototypeProperty.types @@ -211,12 +211,12 @@ Person.prototype.describe = function () { Object.defineProperty(Person.prototype, "thing", { value: 42, writable: true }); >Object.defineProperty(Person.prototype, "thing", { value: 42, writable: true }) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -239,12 +239,12 @@ Object.defineProperty(Person.prototype, "thing", { value: 42, writable: true }); Object.defineProperty(Person.prototype, "readonlyProp", { value: "Smith", writable: false }); >Object.defineProperty(Person.prototype, "readonlyProp", { value: "Smith", writable: false }) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -267,12 +267,12 @@ Object.defineProperty(Person.prototype, "readonlyProp", { value: "Smith", writab Object.defineProperty(Person.prototype, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }); >Object.defineProperty(Person.prototype, "rwAccessors", { get() { return 98122 }, set(_) { /*ignore*/ } }) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -295,12 +295,12 @@ Object.defineProperty(Person.prototype, "rwAccessors", { get() { return 98122 }, Object.defineProperty(Person.prototype, "readonlyAccessor", { get() { return 21.75 } }); >Object.defineProperty(Person.prototype, "readonlyAccessor", { get() { return 21.75 } }) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person @@ -319,12 +319,12 @@ Object.defineProperty(Person.prototype, "readonlyAccessor", { get() { return 21. Object.defineProperty(Person.prototype, "setonlyAccessor", { >Object.defineProperty(Person.prototype, "setonlyAccessor", { /** @param {string} str */ set(str) { this.rwAccessors = Number(str) }}) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Person.prototype : any > : ^^^ >Person : typeof Person diff --git a/tests/baselines/reference/checkObjectDefineProperty.types b/tests/baselines/reference/checkObjectDefineProperty.types index aa7af57c042a1..3f7151b0babe6 100644 --- a/tests/baselines/reference/checkObjectDefineProperty.types +++ b/tests/baselines/reference/checkObjectDefineProperty.types @@ -148,12 +148,12 @@ const x = {}; Object.defineProperty(x, "name", { value: "Charles", writable: true }); >Object.defineProperty(x, "name", { value: "Charles", writable: true }) : typeof x > : ^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : typeof x > : ^^^^^^^^ >"name" : "name" @@ -172,12 +172,12 @@ Object.defineProperty(x, "name", { value: "Charles", writable: true }); Object.defineProperty(x, "middleInit", { value: "H" }); >Object.defineProperty(x, "middleInit", { value: "H" }) : typeof x > : ^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : typeof x > : ^^^^^^^^ >"middleInit" : "middleInit" @@ -192,12 +192,12 @@ Object.defineProperty(x, "middleInit", { value: "H" }); Object.defineProperty(x, "lastName", { value: "Smith", writable: false }); >Object.defineProperty(x, "lastName", { value: "Smith", writable: false }) : typeof x > : ^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : typeof x > : ^^^^^^^^ >"lastName" : "lastName" @@ -216,12 +216,12 @@ Object.defineProperty(x, "lastName", { value: "Smith", writable: false }); Object.defineProperty(x, "zip", { get() { return 98122 }, set(_) { /*ignore*/ } }); >Object.defineProperty(x, "zip", { get() { return 98122 }, set(_) { /*ignore*/ } }) : typeof x > : ^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : typeof x > : ^^^^^^^^ >"zip" : "zip" @@ -240,12 +240,12 @@ Object.defineProperty(x, "zip", { get() { return 98122 }, set(_) { /*ignore*/ } Object.defineProperty(x, "houseNumber", { get() { return 21.75 } }); >Object.defineProperty(x, "houseNumber", { get() { return 21.75 } }) : typeof x > : ^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : typeof x > : ^^^^^^^^ >"houseNumber" : "houseNumber" @@ -260,12 +260,12 @@ Object.defineProperty(x, "houseNumber", { get() { return 21.75 } }); Object.defineProperty(x, "zipStr", { >Object.defineProperty(x, "zipStr", { /** @param {string} str */ set(str) { this.zip = Number(str) }}) : typeof x > : ^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : typeof x > : ^^^^^^^^ >"zipStr" : "zipStr" diff --git a/tests/baselines/reference/checkOtherObjectAssignProperty.types b/tests/baselines/reference/checkOtherObjectAssignProperty.types index 4e818ff29d8df..ecef96fefeefd 100644 --- a/tests/baselines/reference/checkOtherObjectAssignProperty.types +++ b/tests/baselines/reference/checkOtherObjectAssignProperty.types @@ -150,12 +150,12 @@ const obj = { value: 42, writable: true }; Object.defineProperty(exports, "thing", obj); >Object.defineProperty(exports, "thing", obj) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"thing" : "thing" @@ -177,12 +177,12 @@ let str = /** @type {string} */("other"); Object.defineProperty(exports, str, { value: 42, writable: true }); >Object.defineProperty(exports, str, { value: 42, writable: true }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >str : string @@ -207,12 +207,12 @@ const propName = "prop" Object.defineProperty(exports, propName, { value: 42, writable: true }); >Object.defineProperty(exports, propName, { value: 42, writable: true }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >propName : "prop" @@ -232,12 +232,12 @@ Object.defineProperty(exports, propName, { value: 42, writable: true }); Object.defineProperty(exports, "bad1", { }); >Object.defineProperty(exports, "bad1", { }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"bad1" : "bad1" @@ -248,12 +248,12 @@ Object.defineProperty(exports, "bad1", { }); Object.defineProperty(exports, "bad2", { get() { return 12 }, value: "no" }); >Object.defineProperty(exports, "bad2", { get() { return 12 }, value: "no" }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"bad2" : "bad2" @@ -272,12 +272,12 @@ Object.defineProperty(exports, "bad2", { get() { return 12 }, value: "no" }); Object.defineProperty(exports, "bad3", { writable: true }); >Object.defineProperty(exports, "bad3", { writable: true }) : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >exports : typeof import("mod1") > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"bad3" : "bad3" diff --git a/tests/baselines/reference/circularBaseConstraint.types b/tests/baselines/reference/circularBaseConstraint.types index cec18961daeaf..4b6f00f6c328f 100644 --- a/tests/baselines/reference/circularBaseConstraint.types +++ b/tests/baselines/reference/circularBaseConstraint.types @@ -22,8 +22,8 @@ type B = T extends any[] : never; function foo() { ->foo : () => void -> : ^ ^^^^^^^^^^^ +>foo : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `${a}` as B; >`${a}` as B : B diff --git a/tests/baselines/reference/circularContextualMappedType.types b/tests/baselines/reference/circularContextualMappedType.types index 6fff8e2366a4b..ef1f7ee4acb8a 100644 --- a/tests/baselines/reference/circularContextualMappedType.types +++ b/tests/baselines/reference/circularContextualMappedType.types @@ -10,22 +10,22 @@ type Mapped = { [K in keyof T]: Func }; > : ^^^^^^^^^ declare function reproduce(options: number): void; ->reproduce : { (options: number): void; (options: Mapped): T; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>reproduce : { (options: number): void; (options: Mapped): T; } +> : ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >options : number > : ^^^^^^ declare function reproduce(options: Mapped): T ->reproduce : { (options: number): void; (options: Mapped): T; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>reproduce : { (options: number): void; (options: Mapped): T; } +> : ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >options : Mapped > : ^^^^^^^^^ reproduce({ >reproduce({ name: () => { return 123 }}) : { name: number; } > : ^^^^^^^^^^^^^^^^^ ->reproduce : { (options: number): void; (options: Mapped): T; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>reproduce : { (options: number): void; (options: Mapped): T; } +> : ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >{ name: () => { return 123 }} : { name: () => number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ @@ -42,8 +42,8 @@ reproduce({ reproduce({ >reproduce({ name() { return 123 }}) : { name: number; } > : ^^^^^^^^^^^^^^^^^ ->reproduce : { (options: number): void; (options: Mapped): T; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>reproduce : { (options: number): void; (options: Mapped): T; } +> : ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >{ name() { return 123 }} : { name(): number; } > : ^^^^^^^^^^^^^^^^^^^ @@ -58,8 +58,8 @@ reproduce({ reproduce({ >reproduce({ name: function () { return 123 }}) : { name: number; } > : ^^^^^^^^^^^^^^^^^ ->reproduce : { (options: number): void; (options: Mapped): T; } -> : ^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>reproduce : { (options: number): void; (options: Mapped): T; } +> : ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >{ name: function () { return 123 }} : { name: () => number; } > : ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/circularContextualReturnType.types b/tests/baselines/reference/circularContextualReturnType.types index e7e83538cd5a0..85efe644dc1f4 100644 --- a/tests/baselines/reference/circularContextualReturnType.types +++ b/tests/baselines/reference/circularContextualReturnType.types @@ -6,12 +6,12 @@ Object.freeze({ >Object.freeze({ foo() { return Object.freeze('a'); },}) : Readonly<{ foo(): string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Object.freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >{ foo() { return Object.freeze('a'); },} : { foo(): string; } > : ^^^^^^^^^^^^^^^^^^ @@ -22,12 +22,12 @@ Object.freeze({ return Object.freeze('a'); >Object.freeze('a') : string > : ^^^^^^ ->Object.freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Object.freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >'a' : "a" > : ^^^ diff --git a/tests/baselines/reference/circularReferenceInReturnType.types b/tests/baselines/reference/circularReferenceInReturnType.types index 78610ee8daec7..6b32f8185ad67 100644 --- a/tests/baselines/reference/circularReferenceInReturnType.types +++ b/tests/baselines/reference/circularReferenceInReturnType.types @@ -3,8 +3,8 @@ === circularReferenceInReturnType.ts === // inference fails for res1 and res2, but ideally should not declare function fn1(cb: () => T): string; ->fn1 : (cb: () => T) => string -> : ^ ^^ ^^ ^^^^^ +>fn1 : (cb: () => T) => string +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : () => T > : ^^^^^^ @@ -13,16 +13,16 @@ const res1 = fn1(() => res1); > : ^^^ >fn1(() => res1) : string > : ^^^^^^ ->fn1 : (cb: () => T) => string -> : ^ ^^ ^^ ^^^^^ +>fn1 : (cb: () => T) => string +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => res1 : () => any > : ^^^^^^^^^ >res1 : any > : ^^^ declare function fn2(): (cb: () => any) => (a: T) => void; ->fn2 : () => (cb: () => any) => (a: T) => void -> : ^ ^^^^^^^ +>fn2 : () => (cb: () => any) => (a: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >cb : () => any > : ^^^^^^ >a : T @@ -35,16 +35,16 @@ const res2 = fn2()(() => res2); > : ^ ^^^^^^^^^^^^^^ >fn2() : (cb: () => any) => (a: unknown) => void > : ^ ^^ ^^^^^^ ^^^^^^^^^^^^^^ ->fn2 : () => (cb: () => any) => (a: T) => void -> : ^ ^^^^^^^ +>fn2 : () => (cb: () => any) => (a: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >() => res2 : () => (a: unknown) => void > : ^^^^^^^ ^^^^^^^^^^^^^^ >res2 : (a: unknown) => void > : ^ ^^^^^^^^^^^^^^ declare function fn3(): (cb: (arg: T2) => any) => (a: T) => void; ->fn3 : () => (cb: (arg: T2) => any) => (a: T) => void -> : ^ ^^^^^^^ +>fn3 : () => (cb: (arg: T2) => any) => (a: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >cb : (arg: T2) => any > : ^ ^^ ^^^^^ >arg : T2 @@ -57,10 +57,10 @@ const res3 = fn3()(() => res3); > : ^ ^^^^^^^^^^^^^^ >fn3()(() => res3) : (a: unknown) => void > : ^ ^^^^^^^^^^^^^^ ->fn3() : (cb: (arg: T2) => any) => (a: unknown) => void -> : ^ ^^ ^^^ ^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^ ->fn3 : () => (cb: (arg: T2) => any) => (a: T) => void -> : ^ ^^^^^^^ +>fn3() : (cb: (arg: T2) => any) => (a: unknown) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^ +>fn3 : () => (cb: (arg: T2) => any) => (a: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >() => res3 : () => (a: unknown) => void > : ^^^^^^^ ^^^^^^^^^^^^^^ >res3 : (a: unknown) => void diff --git a/tests/baselines/reference/circularReferenceInReturnType2.types b/tests/baselines/reference/circularReferenceInReturnType2.types index 01cde94ffa18f..8de2b86fc4c92 100644 --- a/tests/baselines/reference/circularReferenceInReturnType2.types +++ b/tests/baselines/reference/circularReferenceInReturnType2.types @@ -36,8 +36,8 @@ type Field = { }; declare const object: () => < ->object : () => ; }>(config: { name: string; fields: Fields | (() => Fields); }) => ObjectType -> : ^ ^^^^^^^ +>object : () => ; }>(config: { name: string; fields: Fields | (() => Fields); }) => ObjectType +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ Fields extends { [Key in keyof Fields]: Field; @@ -87,8 +87,8 @@ type FieldFuncArgs> = { }; declare const field: , Key extends string>( ->field : , Key extends string>(field: FieldFuncArgs) => Field -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>field : , Key extends string>(field: FieldFuncArgs) => Field +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ field: FieldFuncArgs >field : FieldFuncArgs @@ -110,8 +110,8 @@ const A = object()({ > : ^^^^^^^^^^^^^^^^^^^^^ >object() : ; }>(config: { name: string; fields: Fields | (() => Fields); }) => ObjectType > : ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->object : () => ; }>(config: { name: string; fields: Fields | (() => Fields); }) => ObjectType -> : ^ ^^^^^^^ +>object : () => ; }>(config: { name: string; fields: Fields | (() => Fields); }) => ObjectType +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >{ name: "A", fields: () => ({ a: field({ type: A, resolve() { return { foo: 100, }; }, }), }),} : { name: string; fields: () => any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -136,8 +136,8 @@ const A = object()({ > : ^^^^^^^^^^^^^^^^^^^^^ >field({ type: A, resolve() { return { foo: 100, }; }, }) : Field > : ^^^^^^^^^^^^^^^^^^^^^ ->field : , Key extends string>(field: FieldFuncArgs) => Field -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>field : , Key extends string>(field: FieldFuncArgs) => Field +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ type: A, resolve() { return { foo: 100, }; }, } : { type: any; resolve(): { foo: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/circularTypeArgumentsLocalAndOuterNoCrash1.types b/tests/baselines/reference/circularTypeArgumentsLocalAndOuterNoCrash1.types index 47ad9b521a015..7232fbb8c7b18 100644 --- a/tests/baselines/reference/circularTypeArgumentsLocalAndOuterNoCrash1.types +++ b/tests/baselines/reference/circularTypeArgumentsLocalAndOuterNoCrash1.types @@ -4,8 +4,8 @@ // https://github.com/microsoft/TypeScript/issues/59062 function f<_T, _S>() { ->f : <_T, _S>() => void -> : ^ ^^ ^^^^^^^^^^^ +>f : <_T extends unknown, _S extends unknown>() => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ interface NumArray extends Array {} type X = NumArray; diff --git a/tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.types b/tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.types index b4b554cedfee0..4773f5dcacd08 100644 --- a/tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.types +++ b/tests/baselines/reference/circularlySimplifyingConditionalTypesNoCrash.types @@ -71,8 +71,8 @@ declare var connect: Connect; const myStoreConnect: Connect = function( >myStoreConnect : Connect > : ^^^^^^^ ->function( mapStateToProps?: any, mapDispatchToProps?: any, mergeProps?: any, options: unknown = {},) { return connect( mapStateToProps, mapDispatchToProps, mergeProps, options, );} : (mapStateToProps?: any, mapDispatchToProps?: any, mergeProps?: any, options?: unknown) => InferableComponentEnhancerWithProps> & TOwnProps> -> : ^ ^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>function( mapStateToProps?: any, mapDispatchToProps?: any, mergeProps?: any, options: unknown = {},) { return connect( mapStateToProps, mapDispatchToProps, mergeProps, options, );} : (mapStateToProps?: any, mapDispatchToProps?: any, mergeProps?: any, options?: unknown) => InferableComponentEnhancerWithProps> & TOwnProps> +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mapStateToProps?: any, >mapStateToProps : any diff --git a/tests/baselines/reference/classExtendingAbstractClassWithMemberCalledTheSameAsItsOwnTypeParam.types b/tests/baselines/reference/classExtendingAbstractClassWithMemberCalledTheSameAsItsOwnTypeParam.types index 7a9b0140da004..544355be3191b 100644 --- a/tests/baselines/reference/classExtendingAbstractClassWithMemberCalledTheSameAsItsOwnTypeParam.types +++ b/tests/baselines/reference/classExtendingAbstractClassWithMemberCalledTheSameAsItsOwnTypeParam.types @@ -3,8 +3,8 @@ === classExtendingAbstractClassWithMemberCalledTheSameAsItsOwnTypeParam.ts === interface IObserver { handleChange(observable: IObservable, change: TChange): void; ->handleChange : (observable: IObservable, change: TChange) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>handleChange : (observable: IObservable, change: TChange) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >observable : IObservable > : ^^^^^^^^^^^^^^^^^^^^^^^ >change : TChange @@ -23,8 +23,8 @@ interface IObservable { export interface IReader { readObservable(observable: IObservable): T; ->readObservable : (observable: IObservable) => T -> : ^ ^^ ^^ ^^^^^ +>readObservable : (observable: IObservable) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >observable : IObservable > : ^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/classFieldSuperAccessibleJs2.types b/tests/baselines/reference/classFieldSuperAccessibleJs2.types index 7a7bcad93242b..cf00bdf694680 100644 --- a/tests/baselines/reference/classFieldSuperAccessibleJs2.types +++ b/tests/baselines/reference/classFieldSuperAccessibleJs2.types @@ -127,8 +127,8 @@ obj.foo(); D.prototype.foo.call(obj); >D.prototype.foo.call(obj) : void > : ^^^^ ->D.prototype.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>D.prototype.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >D.prototype.foo : () => void > : ^^^^^^^^^^ >D.prototype : D @@ -139,8 +139,8 @@ D.prototype.foo.call(obj); > : ^ >foo : () => void > : ^^^^^^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >obj : D > : ^ diff --git a/tests/baselines/reference/classReferencedInContextualParameterWithinItsOwnBaseExpression.types b/tests/baselines/reference/classReferencedInContextualParameterWithinItsOwnBaseExpression.types index 0b3d3b72e0c27..c5f22be9c8488 100644 --- a/tests/baselines/reference/classReferencedInContextualParameterWithinItsOwnBaseExpression.types +++ b/tests/baselines/reference/classReferencedInContextualParameterWithinItsOwnBaseExpression.types @@ -18,8 +18,8 @@ interface Class { } declare const Class: ( ->Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> -> : ^ ^^ ^^ ^^^^^ +>Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ identifier: string, >identifier : string @@ -64,10 +64,10 @@ export class A extends Class("A")( > : ^ >Class("A")( { a: string }, { pretty: (a) => JSON.stringify(a), },) : OutputFrom<{ a: () => Type; }> > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->Class("A") : (fields: Fields, annotations?: Schema | undefined) => Class> -> : ^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> -> : ^ ^^ ^^ ^^^^^ +>Class("A") : (fields: Fields, annotations?: Schema | undefined) => Class> +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Class : (identifier: string) => (fields: Fields, annotations?: Schema) => Class> +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"A" : "A" > : ^^^ diff --git a/tests/baselines/reference/coAndContraVariantInferences.types b/tests/baselines/reference/coAndContraVariantInferences.types index 895e19624b182..14f6797fe70a2 100644 --- a/tests/baselines/reference/coAndContraVariantInferences.types +++ b/tests/baselines/reference/coAndContraVariantInferences.types @@ -28,8 +28,8 @@ declare function fab(arg: A | B): void; > : ^^^^^ declare function foo(x: { kind: T }, f: (arg: { kind: T }) => void): void; ->foo : (x: { kind: T; }, f: (arg: { kind: T; }) => void) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (x: { kind: T; }, f: (arg: { kind: T; }) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : { kind: T; } > : ^^^^^^^^ ^^^ >kind : T @@ -44,8 +44,8 @@ declare function foo(x: { kind: T }, f: (arg: { kind: T }) => void): void; foo(a, fab); >foo(a, fab) : void > : ^^^^ ->foo : (x: { kind: T; }, f: (arg: { kind: T; }) => void) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (x: { kind: T; }, f: (arg: { kind: T; }) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >fab : (arg: A | B) => void @@ -54,8 +54,8 @@ foo(a, fab); foo(b, fab); >foo(b, fab) : void > : ^^^^ ->foo : (x: { kind: T; }, f: (arg: { kind: T; }) => void) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (x: { kind: T; }, f: (arg: { kind: T; }) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >fab : (arg: A | B) => void @@ -98,8 +98,8 @@ const actionB = { payload: true } as Action<'ACTION_B', boolean>; > : ^^^^ function call( ->call : (action: Action, fn: (action: Action) => any) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>call : (action: Action, fn: (action: Action) => any) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ action: Action, >action : Action @@ -145,8 +145,8 @@ const printFn = (action: typeof actionA | typeof actionB)=> console.log(action); call(actionA, printFn); >call(actionA, printFn) : void > : ^^^^ ->call : (action: Action, fn: (action: Action) => any) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>call : (action: Action, fn: (action: Action) => any) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >actionA : Action<"ACTION_A", string> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >printFn : (action: typeof actionA | typeof actionB) => void @@ -155,8 +155,8 @@ call(actionA, printFn); call(actionB, printFn); >call(actionB, printFn) : void > : ^^^^ ->call : (action: Action, fn: (action: Action) => any) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>call : (action: Action, fn: (action: Action) => any) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >actionB : Action<"ACTION_B", boolean> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >printFn : (action: typeof actionA | typeof actionB) => void diff --git a/tests/baselines/reference/coAndContraVariantInferences2.types b/tests/baselines/reference/coAndContraVariantInferences2.types index d5d96850dbe65..33248911e9169 100644 --- a/tests/baselines/reference/coAndContraVariantInferences2.types +++ b/tests/baselines/reference/coAndContraVariantInferences2.types @@ -14,8 +14,8 @@ interface C extends A { c: string } > : ^^^^^^ declare function cast(x: T, test: (x: T) => x is U): U; ->cast : (x: T, test: (x: T) => x is U) => U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>cast : (x: T, test: (x: T) => x is U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >test : (x: T) => x is U @@ -42,8 +42,8 @@ function f1(a: A, b: B) { > : ^ >cast(a, isC) : C > : ^ ->cast : (x: T, test: (x: T) => x is U) => U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>cast : (x: T, test: (x: T) => x is U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >isC : (x: A) => x is C @@ -54,8 +54,8 @@ function f1(a: A, b: B) { > : ^ >cast(b, isC) : C > : ^ ->cast : (x: T, test: (x: T) => x is U) => U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>cast : (x: T, test: (x: T) => x is U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >isC : (x: A) => x is C @@ -69,8 +69,8 @@ declare function useA(a: A): void; > : ^ declare function consume(t: T, u: U, f: (x: T) => void): void; ->consume : (t: T, u: U, f: (x: T) => void) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>consume : (t: T, u: U, f: (x: T) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >u : U @@ -91,8 +91,8 @@ function f2(b: B, c: C) { consume(b, c, useA); // consume >consume(b, c, useA) : void > : ^^^^ ->consume : (t: T, u: U, f: (x: T) => void) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>consume : (t: T, u: U, f: (x: T) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >c : C @@ -103,8 +103,8 @@ function f2(b: B, c: C) { consume(c, b, useA); // consume >consume(c, b, useA) : void > : ^^^^ ->consume : (t: T, u: U, f: (x: T) => void) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>consume : (t: T, u: U, f: (x: T) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >b : B @@ -115,8 +115,8 @@ function f2(b: B, c: C) { consume(b, b, useA); // consume >consume(b, b, useA) : void > : ^^^^ ->consume : (t: T, u: U, f: (x: T) => void) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>consume : (t: T, u: U, f: (x: T) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >b : B @@ -127,8 +127,8 @@ function f2(b: B, c: C) { consume(c, c, useA); // consume >consume(c, c, useA) : void > : ^^^^ ->consume : (t: T, u: U, f: (x: T) => void) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>consume : (t: T, u: U, f: (x: T) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >c : C @@ -138,8 +138,8 @@ function f2(b: B, c: C) { } declare function every(array: readonly T[], f: (x: T) => x is U): array is readonly U[]; ->every : (array: readonly T[], f: (x: T) => x is U) => array is readonly U[] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>every : (array: readonly T[], f: (x: T) => x is U) => array is readonly U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >array : readonly T[] > : ^^^^^^^^^^^^ >f : (x: T) => x is U @@ -156,8 +156,8 @@ function f3(arr: readonly B[] | readonly C[]) { if (every(arr, isC)) { >every(arr, isC) : boolean > : ^^^^^^^ ->every : (array: readonly T[], f: (x: T) => x is U) => array is readonly U[] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>every : (array: readonly T[], f: (x: T) => x is U) => array is readonly U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >arr : readonly B[] | readonly C[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isC : (x: A) => x is C @@ -293,8 +293,8 @@ declare function isExpression(node: Node): node is Expression; > : ^^^^ declare function tryCast(value: TIn | undefined, test: (value: TIn) => value is TOut): TOut; ->tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >value : TIn | undefined > : ^^^^^^^^^^^^^^^ >test : (value: TIn) => value is TOut @@ -313,8 +313,8 @@ function bar(node: Identifier | FunctionDeclaration) { > : ^^^^^^^^^^ >tryCast(node, isExpression) : Expression > : ^^^^^^^^^^ ->tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >node : Identifier | FunctionDeclaration > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isExpression : (node: Node) => node is Expression @@ -382,8 +382,8 @@ const maybeClassStatement = tryCast(statement, isClassLike); // ClassLike1 > : ^^^^^^^^^^ >tryCast(statement, isClassLike) : ClassLike1 > : ^^^^^^^^^^ ->tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >statement : Statement1 | undefined > : ^^^^^^^^^^^^^^^^^^^^^^ >isClassLike : (node: Node1) => node is ClassLike1 @@ -418,8 +418,8 @@ const x = tryCast(types, isNodeArray); // NodeAray > : ^^^^^^^^^^^^^^^^^^^ >tryCast(types, isNodeArray) : NodeArray > : ^^^^^^^^^^^^^^^^^^^ ->tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>tryCast : (value: TIn | undefined, test: (value: TIn) => value is TOut) => TOut +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >types : readonly TypeNode[] > : ^^^^^^^^^^^^^^^^^^^ >isNodeArray : (array: readonly T[]) => array is NodeArray diff --git a/tests/baselines/reference/coAndContraVariantInferences3.types b/tests/baselines/reference/coAndContraVariantInferences3.types index 30b29ccb9ebbe..3aba5acacc56a 100644 --- a/tests/baselines/reference/coAndContraVariantInferences3.types +++ b/tests/baselines/reference/coAndContraVariantInferences3.types @@ -245,8 +245,8 @@ declare const updateImportDeclaration: { } declare function every(array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; ->every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => element is U_1): array is readonly U_1[] | undefined; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => boolean): boolean; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => element is U_1): array is readonly U_1[] | undefined; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => boolean): boolean; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >array : readonly T[] > : ^^^^^^^^^^^^ >callback : (element: T, index: number) => element is U @@ -257,8 +257,8 @@ declare function every(array: readonly T[], callback: (element: > : ^^^^^^ declare function every(array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; ->every : { (array: readonly T_1[], callback: (element: T_1, index: number) => element is U_1): array is readonly U_1[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => boolean): boolean; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T_1[], callback: (element: T_1, index: number) => element is U_1): array is readonly U_1[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => boolean): boolean; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >array : readonly T[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^ >callback : (element: T, index: number) => element is U @@ -269,8 +269,8 @@ declare function every(array: readonly T[] | undefined, callback > : ^^^^^^ declare function every(array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; ->every : { (array: readonly T_1[], callback: (element: T_1, index: number) => element is U): array is readonly U[]; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } -> : ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T_1[], callback: (element: T_1, index: number) => element is U): array is readonly U[]; (array: readonly T_1[] | undefined, callback: (element: T_1, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >array : readonly T[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^ >callback : (element: T, index: number) => boolean @@ -440,8 +440,8 @@ buildOverload("updateImportDeclaration") > : ^^^^^^^^^ >every(modifiers, isModifier) : boolean > : ^^^^^^^ ->every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >modifiers : readonly Modifier[] | readonly Decorator[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isModifier : (node: Node) => node is Modifier @@ -542,8 +542,8 @@ buildOverload("updateImportDeclaration") > : ^^^^^^^^^ >every(decorators, isDecorator) : boolean > : ^^^^^^^ ->every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >decorators : readonly Modifier[] | readonly Decorator[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isDecorator : (node: Node) => node is Decorator @@ -651,8 +651,8 @@ function foo() { every(modifiers, isModifier); >every(modifiers, isModifier) : boolean > : ^^^^^^^ ->every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >modifiers : readonly Modifier[] | readonly Decorator[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isModifier : (node: Node) => node is Modifier @@ -661,8 +661,8 @@ function foo() { every(modifiers, isDecorator); >every(modifiers, isDecorator) : boolean > : ^^^^^^^ ->every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>every : { (array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[]; (array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined; (array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >modifiers : readonly Modifier[] | readonly Decorator[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isDecorator : (node: Node) => node is Decorator diff --git a/tests/baselines/reference/coAndContraVariantInferences4.types b/tests/baselines/reference/coAndContraVariantInferences4.types index 923567537b40b..1a8ec93cabada 100644 --- a/tests/baselines/reference/coAndContraVariantInferences4.types +++ b/tests/baselines/reference/coAndContraVariantInferences4.types @@ -45,8 +45,8 @@ declare function isDecorator(node: Node): node is Decorator; > : ^^^^ declare function every(array: readonly T[], callback: (element: T) => element is U): array is readonly U[]; ->every : (array: readonly T[], callback: (element: T) => element is U) => array is readonly U[] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>every : (array: readonly T[], callback: (element: T) => element is U) => array is readonly U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >array : readonly T[] > : ^^^^^^^^^^^^ >callback : (element: T) => element is U @@ -65,8 +65,8 @@ function foo() { every(modifiers, isModifier); >every(modifiers, isModifier) : boolean > : ^^^^^^^ ->every : (array: readonly T[], callback: (element: T) => element is U) => array is readonly U[] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>every : (array: readonly T[], callback: (element: T) => element is U) => array is readonly U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >modifiers : readonly Decorator[] | readonly Modifier[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isModifier : (node: Node) => node is Modifier @@ -75,8 +75,8 @@ function foo() { every(modifiers, isDecorator); >every(modifiers, isDecorator) : boolean > : ^^^^^^^ ->every : (array: readonly T[], callback: (element: T) => element is U) => array is readonly U[] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>every : (array: readonly T[], callback: (element: T) => element is U) => array is readonly U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >modifiers : readonly Decorator[] | readonly Modifier[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isDecorator : (node: Node) => node is Decorator diff --git a/tests/baselines/reference/coAndContraVariantInferences6.types b/tests/baselines/reference/coAndContraVariantInferences6.types index 45f78449069d0..d8340759cd5fb 100644 --- a/tests/baselines/reference/coAndContraVariantInferences6.types +++ b/tests/baselines/reference/coAndContraVariantInferences6.types @@ -92,16 +92,16 @@ declare const stat: any; [].push.apply(props, stat.properties); >[].push.apply(props, stat.properties) : number > : ^^^^^^ ->[].push.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>[].push.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >[].push : (...items: never[]) => number > : ^^^^ ^^^^^^^^^^^^^^ >[] : never[] > : ^^^^^^^ >push : (...items: never[]) => number > : ^^^^ ^^^^^^^^^^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >props : any[] > : ^^^^^ >stat.properties : any diff --git a/tests/baselines/reference/coAndContraVariantInferences8.types b/tests/baselines/reference/coAndContraVariantInferences8.types index 95eae412d8b2d..95a89912247cc 100644 --- a/tests/baselines/reference/coAndContraVariantInferences8.types +++ b/tests/baselines/reference/coAndContraVariantInferences8.types @@ -19,24 +19,24 @@ declare const y: any; fn.call(null, x); >fn.call(null, x) : void > : ^^^^ ->fn.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>fn.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >fn : (() => void) | ((a: number) => void) > : ^^^^^^^ ^^^^^^ ^^ ^^^^^ ^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ fn.call(null, y); >fn.call(null, y) : void > : ^^^^ ->fn.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>fn.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >fn : (() => void) | ((a: number) => void) > : ^^^^^^^ ^^^^^^ ^^ ^^^^^ ^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >y : any export {}; diff --git a/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement.types b/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement.types index 54ff2d7d5dcb2..cd95fdde19f06 100644 --- a/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement.types +++ b/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement.types @@ -18,12 +18,12 @@ export class Foo { > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve('') : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >'' : "" > : ^^ } diff --git a/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement2.types b/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement2.types index 5bbdfde96b4e6..71940cc4a99cd 100644 --- a/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement2.types +++ b/tests/baselines/reference/commentEmitOnParenthesizedAssertionInReturnStatement2.types @@ -18,12 +18,12 @@ export class Foo { > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve('') : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >'' : "" > : ^^ } diff --git a/tests/baselines/reference/complicatedIndexesOfIntersectionsAreInferencable.types b/tests/baselines/reference/complicatedIndexesOfIntersectionsAreInferencable.types index f1114d508acbc..d0b20658bbfce 100644 --- a/tests/baselines/reference/complicatedIndexesOfIntersectionsAreInferencable.types +++ b/tests/baselines/reference/complicatedIndexesOfIntersectionsAreInferencable.types @@ -18,8 +18,8 @@ interface FormikConfig { } declare function Func( ->Func : (x: (string extends "validate" | "initialValues" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "validate" | "initialValues" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>>)) => void -> : ^ ^^^^^^^^^^^ ^^^^^^^ ^^ ^^^^^ +>Func : (x: (string extends "validate" | "initialValues" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "validate" | "initialValues" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>>)) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ x: (string extends "validate" | "initialValues" | keyof ExtraProps >x : string extends "validate" | "initialValues" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "validate" | "initialValues" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>> @@ -33,8 +33,8 @@ declare function Func( Func({ >Func({ initialValues: { foo: "" }, validate: props => { props.foo; }}) : void > : ^^^^ ->Func : (x: (string extends "validate" | "initialValues" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "validate" | "initialValues" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>>)) => void -> : ^ ^^^^^^^^^^^ ^^^^^^^ ^^ ^^^^^ +>Func : (x: (string extends "validate" | "initialValues" | keyof ExtraProps ? Readonly & ExtraProps> : Pick & ExtraProps>, "validate" | "initialValues" | Exclude> & Partial & ExtraProps>, "validateOnChange" | Extract>>)) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ initialValues: { foo: "" }, validate: props => { props.foo; }} : { initialValues: { foo: string; }; validate: (props: { foo: string; }) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.errors.txt b/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.errors.txt index c81b39e8f03a4..2605125ddece2 100644 --- a/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.errors.txt +++ b/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.errors.txt @@ -2,7 +2,7 @@ conditionalTypeAssignabilityWhenDeferred.ts(28,20): error TS2345: Argument of ty conditionalTypeAssignabilityWhenDeferred.ts(29,21): error TS2345: Argument of type 'string' is not assignable to parameter of type 'never'. conditionalTypeAssignabilityWhenDeferred.ts(39,3): error TS2322: Type '{ x: T; y: T; }' is not assignable to type 'T extends T ? { x: T; y: T; } : never'. conditionalTypeAssignabilityWhenDeferred.ts(46,3): error TS2322: Type 'string' is not assignable to type 'Foo'. -conditionalTypeAssignabilityWhenDeferred.ts(63,9): error TS2322: Type '{ a: number; b: number; }' is not assignable to type '[T] extends [[infer U]] ? U : { b: number; }'. +conditionalTypeAssignabilityWhenDeferred.ts(63,9): error TS2322: Type '{ a: number; b: number; }' is not assignable to type '[T] extends [[infer U extends unknown]] ? U : { b: number; }'. conditionalTypeAssignabilityWhenDeferred.ts(95,23): error TS2345: Argument of type 'string' is not assignable to parameter of type 'Unwrap'. conditionalTypeAssignabilityWhenDeferred.ts(106,3): error TS2322: Type 'Q' is not assignable to type 'InferBecauseWhyNot'. Type '(arg: any) => any' is not assignable to type 'InferBecauseWhyNot'. @@ -83,7 +83,7 @@ conditionalTypeAssignabilityWhenDeferred.ts(116,3): error TS2322: Type 'Q' is no // Infer type parameters: no good const o2: [T] extends [[infer U]] ? U : { b: number } = o; ~~ -!!! error TS2322: Type '{ a: number; b: number; }' is not assignable to type '[T] extends [[infer U]] ? U : { b: number; }'. +!!! error TS2322: Type '{ a: number; b: number; }' is not assignable to type '[T] extends [[infer U extends unknown]] ? U : { b: number; }'. // The next 4 are arguable - if you choose to ignore the `never` distribution case, // then they're all good. The `never` case _is_ a bit of an outlier - we say distributive types diff --git a/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.types b/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.types index 1667b2a0395a1..8876a06fefee6 100644 --- a/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.types +++ b/tests/baselines/reference/conditionalTypeAssignabilityWhenDeferred.types @@ -106,8 +106,8 @@ onlyNullablePlease2(y); // error as expected > : ^^^^^^ function f(t: T) { ->f : (t: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f : (t: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ @@ -149,8 +149,8 @@ function f(t: T) { } function f2(t1: { x: T; y: T }, t2: T extends T ? { x: T; y: T } : never) { ->f2 : (t1: { x: T; y: T; }, t2: T extends T ? { x: T; y: T; } : never) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f2 : (t1: { x: T; y: T; }, t2: T extends T ? { x: T; y: T; } : never) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t1 : { x: T; y: T; } > : ^^^^^ ^^^^^ ^^^ >x : T @@ -188,8 +188,8 @@ type Foo = T extends true ? string : "a"; > : ^^^^ function test(x: Foo, s: string) { ->test : (x: Foo, s: string) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>test : (x: Foo, s: string) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Foo > : ^^^^^^ >s : string @@ -224,8 +224,8 @@ type Distributive = T extends { a: number } ? { a: number } : { b: number }; > : ^^^^^^ function testAssignabilityToConditionalType() { ->testAssignabilityToConditionalType : () => void -> : ^ ^^^^^^^^^^^ +>testAssignabilityToConditionalType : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ const o = { a: 1, b: 2 }; >o : { a: number; b: number; } @@ -291,8 +291,8 @@ function testAssignabilityToConditionalType() { // Infer type parameters: no good const o2: [T] extends [[infer U]] ? U : { b: number } = o; ->o2 : [T] extends [[infer U]] ? U : { b: number; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ +>o2 : [T] extends [[infer U extends unknown]] ? U : { b: number; } +> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : number > : ^^^^^^ >o : { a: number; b: number; } @@ -349,8 +349,8 @@ type Unwrap = T extends Wrapped ? U : T; > : ^^^^^^^^^ declare function set( ->set : (obj: T, key: K, value: Unwrap) => Unwrap -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>set : (obj: T, key: K, value: Unwrap) => Unwrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ obj: T, >obj : T @@ -381,8 +381,8 @@ class Foo2 { set(this, "prop", "hi"); // <-- type error >set(this, "prop", "hi") : Unwrap > : ^^^^^^^^^^^^^^^^^^^^ ->set : (obj: T, key: K, value: Unwrap) => Unwrap -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>set : (obj: T, key: K, value: Unwrap) => Unwrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >this : this > : ^^^^ >"prop" : "prop" @@ -395,8 +395,8 @@ class Foo2 { set(new Foo2(), "prop", "hi"); // <-- typechecks >set(new Foo2(), "prop", "hi") : string > : ^^^^^^ ->set : (obj: T, key: K, value: Unwrap) => Unwrap -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>set : (obj: T, key: K, value: Unwrap) => Unwrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >new Foo2() : Foo2 > : ^^^^ >Foo2 : typeof Foo2 diff --git a/tests/baselines/reference/conditionalTypeRelaxingConstraintAssignability.types b/tests/baselines/reference/conditionalTypeRelaxingConstraintAssignability.types index b9fd8f3398815..704c0d1e8267d 100644 --- a/tests/baselines/reference/conditionalTypeRelaxingConstraintAssignability.types +++ b/tests/baselines/reference/conditionalTypeRelaxingConstraintAssignability.types @@ -107,8 +107,8 @@ type DeepPartial = T extends object ? {[K in keyof T]?: DeepPartial} : T; declare function f(t: T, partial: DeepPartial): T; ->f : (t: T, partial: DeepPartial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f : (t: T, partial: DeepPartial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >partial : DeepPartial @@ -125,8 +125,8 @@ function g(p1: I, p2: Partial): I { return f(p1, p2); >f(p1, p2) : I > : ^ ->f : (t: T, partial: DeepPartial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f : (t: T, partial: DeepPartial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >p1 : I > : ^ >p2 : Partial diff --git a/tests/baselines/reference/conditionalTypes1.errors.txt b/tests/baselines/reference/conditionalTypes1.errors.txt index aa2ae24033b16..43a7b6219dafb 100644 --- a/tests/baselines/reference/conditionalTypes1.errors.txt +++ b/tests/baselines/reference/conditionalTypes1.errors.txt @@ -95,8 +95,6 @@ conditionalTypes1.ts(288,43): error TS2322: Type 'T95' is not assignable to t ~ !!! error TS2322: Type 'T' is not assignable to type 'NonNullable'. !!! error TS2322: Type 'T' is not assignable to type '{}'. -!!! related TS2208 conditionalTypes1.ts:10:13: This type parameter might need an `extends {}` constraint. -!!! related TS2208 conditionalTypes1.ts:10:13: This type parameter might need an `extends NonNullable` constraint. } function f2(x: T, y: NonNullable) { diff --git a/tests/baselines/reference/conditionalTypes1.js b/tests/baselines/reference/conditionalTypes1.js index b90f9f21605cc..bac3c95ea217c 100644 --- a/tests/baselines/reference/conditionalTypes1.js +++ b/tests/baselines/reference/conditionalTypes1.js @@ -647,24 +647,24 @@ type T82 = Eq2; type T83 = Eq2; type Foo = T extends string ? boolean : number; type Bar = T extends string ? boolean : number; -declare const convert: (value: Foo) => Bar; +declare const convert: (value: Foo) => Bar; type Baz = Foo; -declare const convert2: (value: Foo) => Baz; +declare const convert2: (value: Foo) => Baz; declare function f31(): void; declare function f32(): void; declare function f33(): void; type T90 = T extends 0 ? 0 : () => 0; type T91 = T extends 0 ? 0 : () => 0; -declare const f40: (a: T90) => T91; -declare const f41: (a: T91) => T90; +declare const f40: (a: T90) => T91; +declare const f41: (a: T91) => T90; type T92 = T extends () => 0 ? () => 1 : () => 2; type T93 = T extends () => 0 ? () => 1 : () => 2; -declare const f42: (a: T92) => T93; -declare const f43: (a: T93) => T92; +declare const f42: (a: T92) => T93; +declare const f43: (a: T93) => T92; type T94 = T extends string ? true : 42; type T95 = T extends string ? boolean : number; -declare const f44: (value: T94) => T95; -declare const f45: (value: T95) => T94; +declare const f44: (value: T94) => T95; +declare const f45: (value: T95) => T94; declare function f50(): void; type OldDiff = ({ [P in T]: P; diff --git a/tests/baselines/reference/conditionalTypes1.types b/tests/baselines/reference/conditionalTypes1.types index 3aac0bf578434..36663fe1f5cc4 100644 --- a/tests/baselines/reference/conditionalTypes1.types +++ b/tests/baselines/reference/conditionalTypes1.types @@ -29,8 +29,8 @@ type T05 = NonNullable<(() => string) | string[] | null | undefined>; // (() => > : ^^^ function f1(x: T, y: NonNullable) { ->f1 : (x: T, y: NonNullable) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: T, y: NonNullable) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : NonNullable @@ -91,8 +91,8 @@ function f2(x: T, y: NonNullable) { } function f3(x: Partial[keyof T], y: NonNullable[keyof T]>) { ->f3 : (x: Partial[keyof T], y: NonNullable[keyof T]>) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (x: Partial[keyof T], y: NonNullable[keyof T]>) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Partial[keyof T] > : ^^^^^^^^^^^^^^^^^^^ >y : NonNullable[keyof T]> @@ -359,8 +359,8 @@ type T31 = NonFunctionProperties; > : ^^^ function f7(x: T, y: FunctionProperties, z: NonFunctionProperties) { ->f7 : (x: T, y: FunctionProperties, z: NonFunctionProperties) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f7 : (x: T, y: FunctionProperties, z: NonFunctionProperties) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : FunctionProperties @@ -418,8 +418,8 @@ function f7(x: T, y: FunctionProperties, z: NonFunctionProperties) { } function f8(x: keyof T, y: FunctionPropertyNames, z: NonFunctionPropertyNames) { ->f8 : (x: keyof T, y: FunctionPropertyNames, z: NonFunctionPropertyNames) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f8 : (x: keyof T, y: FunctionPropertyNames, z: NonFunctionPropertyNames) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : keyof T > : ^^^^^^^ >y : FunctionPropertyNames @@ -1030,18 +1030,18 @@ type T52 = IsNever; // false > : ^^^^^ function f22(x: T extends (infer U)[] ? U[] : never) { ->f22 : (x: T extends (infer U)[] ? U[] : never) => void -> : ^ ^^ ^^ ^^^^^^^^^ ->x : T extends (infer U)[] ? U[] : never -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>f22 : (x: T extends (infer U)[] ? U[] : never) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>x : T extends (infer U extends unknown)[] ? U[] : never +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ let e = x[0]; // {} >e : unknown > : ^^^^^^^ >x[0] : unknown > : ^^^^^^^ ->x : T extends (infer U)[] ? U[] : never -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>x : T extends (infer U extends unknown)[] ? U[] : never +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ } @@ -1049,16 +1049,16 @@ function f22(x: T extends (infer U)[] ? U[] : never) { function f23(x: T extends (infer U)[] ? U[] : never) { >f23 : (x: T extends (infer U)[] ? U[] : never) => void > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ ->x : T extends (infer U)[] ? U[] : never -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>x : T extends (infer U extends unknown)[] ? U[] : never +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ let e = x[0]; // string >e : string > : ^^^^^^ >x[0] : string > : ^^^^^^ ->x : T extends (infer U)[] ? U[] : never -> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>x : T extends (infer U extends unknown)[] ? U[] : never +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >0 : 0 > : ^ } @@ -1202,10 +1202,10 @@ type Bar = T extends string ? boolean : number; > : ^^^^^^ const convert = (value: Foo): Bar => value; ->convert : (value: Foo) => Bar -> : ^ ^^ ^^ ^^^^^ ->(value: Foo): Bar => value : (value: Foo) => Bar -> : ^ ^^ ^^ ^^^^^ +>convert : (value: Foo) => Bar +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(value: Foo): Bar => value : (value: Foo) => Bar +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : Foo > : ^^^^^^ >value : Foo @@ -1216,18 +1216,18 @@ type Baz = Foo; > : ^^^^^^ const convert2 = (value: Foo): Baz => value; ->convert2 : (value: Foo) => Baz -> : ^ ^^ ^^ ^^^^^ ->(value: Foo): Baz => value : (value: Foo) => Baz -> : ^ ^^ ^^ ^^^^^ +>convert2 : (value: Foo) => Baz +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(value: Foo): Baz => value : (value: Foo) => Baz +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : Foo > : ^^^^^^ >value : Foo > : ^^^^^^ function f31() { ->f31 : () => void -> : ^ ^^^^^^^^^^^ +>f31 : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type T1 = T extends string ? boolean : number; >T1 : T extends string ? boolean : number @@ -1247,8 +1247,8 @@ function f31() { } function f32() { ->f32 : () => void -> : ^ ^^ ^^^^^^^^^^^ +>f32 : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type T1 = T & U extends string ? boolean : number; >T1 : T & U extends string ? boolean : number @@ -1268,8 +1268,8 @@ function f32() { } function f33() { ->f33 : () => void -> : ^ ^^ ^^^^^^^^^^^ +>f33 : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type T1 = Foo; >T1 : Foo @@ -1299,20 +1299,20 @@ type T91 = T extends 0 ? 0 : () => 0; > : ^^^^^^ const f40 = (a: T90): T91 => a; ->f40 : (a: T90) => T91 -> : ^ ^^ ^^ ^^^^^ ->(a: T90): T91 => a : (a: T90) => T91 -> : ^ ^^ ^^ ^^^^^ +>f40 : (a: T90) => T91 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(a: T90): T91 => a : (a: T90) => T91 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T90 > : ^^^^^^ >a : T90 > : ^^^^^^ const f41 = (a: T91): T90 => a; ->f41 : (a: T91) => T90 -> : ^ ^^ ^^ ^^^^^ ->(a: T91): T90 => a : (a: T91) => T90 -> : ^ ^^ ^^ ^^^^^ +>f41 : (a: T91) => T90 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(a: T91): T90 => a : (a: T91) => T90 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T91 > : ^^^^^^ >a : T91 @@ -1327,20 +1327,20 @@ type T93 = T extends () => 0 ? () => 1 : () => 2; > : ^^^^^^ const f42 = (a: T92): T93 => a; ->f42 : (a: T92) => T93 -> : ^ ^^ ^^ ^^^^^ ->(a: T92): T93 => a : (a: T92) => T93 -> : ^ ^^ ^^ ^^^^^ +>f42 : (a: T92) => T93 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(a: T92): T93 => a : (a: T92) => T93 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T92 > : ^^^^^^ >a : T92 > : ^^^^^^ const f43 = (a: T93): T92 => a; ->f43 : (a: T93) => T92 -> : ^ ^^ ^^ ^^^^^ ->(a: T93): T92 => a : (a: T93) => T92 -> : ^ ^^ ^^ ^^^^^ +>f43 : (a: T93) => T92 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(a: T93): T92 => a : (a: T93) => T92 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T93 > : ^^^^^^ >a : T93 @@ -1357,20 +1357,20 @@ type T95 = T extends string ? boolean : number; > : ^^^^^^ const f44 = (value: T94): T95 => value; ->f44 : (value: T94) => T95 -> : ^ ^^ ^^ ^^^^^ ->(value: T94): T95 => value : (value: T94) => T95 -> : ^ ^^ ^^ ^^^^^ +>f44 : (value: T94) => T95 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(value: T94): T95 => value : (value: T94) => T95 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T94 > : ^^^^^^ >value : T94 > : ^^^^^^ const f45 = (value: T95): T94 => value; // Error ->f45 : (value: T95) => T94 -> : ^ ^^ ^^ ^^^^^ ->(value: T95): T94 => value : (value: T95) => T94 -> : ^ ^^ ^^ ^^^^^ +>f45 : (value: T95) => T94 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(value: T95): T94 => value : (value: T95) => T94 +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T95 > : ^^^^^^ >value : T95 @@ -1538,8 +1538,8 @@ type RecursivePartial = { }; declare function assign(o: T, a: RecursivePartial): void; ->assign : (o: T, a: RecursivePartial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assign : (o: T, a: RecursivePartial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >o : T > : ^ >a : RecursivePartial @@ -1576,8 +1576,8 @@ var a = {o: 1, b: 2, c: [{a: 1, c: '213'}]} assign(a, {o: 2, c: {0: {a: 2, c: '213123'}}}) >assign(a, {o: 2, c: {0: {a: 2, c: '213123'}}}) : void > : ^^^^ ->assign : (o: T, a: RecursivePartial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assign : (o: T, a: RecursivePartial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : { o: number; b: number; c: { a: number; c: string; }[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{o: 2, c: {0: {a: 2, c: '213123'}}} : { o: number; c: { 0: { a: number; c: string; }; }; } diff --git a/tests/baselines/reference/conditionalTypes2.errors.txt b/tests/baselines/reference/conditionalTypes2.errors.txt index de78fe2d373c3..d0a6d17cacfff 100644 --- a/tests/baselines/reference/conditionalTypes2.errors.txt +++ b/tests/baselines/reference/conditionalTypes2.errors.txt @@ -54,7 +54,6 @@ conditionalTypes2.ts(75,12): error TS2345: Argument of type 'Extract2' is not assignable to type 'Covariant'. !!! error TS2322: Type 'A' is not assignable to type 'B'. !!! error TS2322: 'B' could be instantiated with an arbitrary type which could be unrelated to 'A'. -!!! related TS2208 conditionalTypes2.ts:13:13: This type parameter might need an `extends B` constraint. } function f2(a: Contravariant, b: Contravariant) { @@ -63,7 +62,6 @@ conditionalTypes2.ts(75,12): error TS2345: Argument of type 'Extract2' is not assignable to type 'Contravariant'. !!! error TS2322: Type 'A' is not assignable to type 'B'. !!! error TS2322: 'B' could be instantiated with an arbitrary type which could be unrelated to 'A'. -!!! related TS2208 conditionalTypes2.ts:18:13: This type parameter might need an `extends B` constraint. b = a; } @@ -92,8 +90,6 @@ conditionalTypes2.ts(75,12): error TS2345: Argument of type 'Extract2 is a T that is known to be a Function diff --git a/tests/baselines/reference/conditionalTypes2.types b/tests/baselines/reference/conditionalTypes2.types index da271b7a6f7d4..95a705efae3f0 100644 --- a/tests/baselines/reference/conditionalTypes2.types +++ b/tests/baselines/reference/conditionalTypes2.types @@ -20,8 +20,8 @@ interface Invariant { } function f1(a: Covariant, b: Covariant) { ->f1 : (a: Covariant, b: Covariant) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f1 : (a: Covariant, b: Covariant) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Covariant > : ^^^^^^^^^^^^ >b : Covariant @@ -45,8 +45,8 @@ function f1(a: Covariant, b: Covariant) { } function f2(a: Contravariant, b: Contravariant) { ->f2 : (a: Contravariant, b: Contravariant) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f2 : (a: Contravariant, b: Contravariant) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Contravariant > : ^^^^^^^^^^^^^^^^ >b : Contravariant @@ -70,8 +70,8 @@ function f2(a: Contravariant, b: Contravariant) { } function f3(a: Invariant, b: Invariant) { ->f3 : (a: Invariant, b: Invariant) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (a: Invariant, b: Invariant) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Invariant > : ^^^^^^^^^^^^ >b : Invariant @@ -96,8 +96,8 @@ function f3(a: Invariant, b: Invariant) { // Extract is a T that is known to be a Function function isFunction(value: T): value is Extract { ->isFunction : (value: T) => value is Extract -> : ^ ^^ ^^ ^^^^^ +>isFunction : (value: T) => value is Extract +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -113,16 +113,16 @@ function isFunction(value: T): value is Extract { } function getFunction(item: T) { ->getFunction : (item: T) => Extract -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>getFunction : (item: T) => Extract +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >item : T > : ^ if (isFunction(item)) { >isFunction(item) : boolean > : ^^^^^^^ ->isFunction : (value: T_1) => value is Extract -> : ^^^^^^ ^^ ^^^^^ +>isFunction : (value: T_1) => value is Extract +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >item : T > : ^ @@ -138,16 +138,16 @@ function getFunction(item: T) { } function f10(x: T) { ->f10 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f10 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ if (isFunction(x)) { >isFunction(x) : boolean > : ^^^^^^^ ->isFunction : (value: T_1) => value is Extract -> : ^^^^^^ ^^ ^^^^^ +>isFunction : (value: T_1) => value is Extract +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -174,8 +174,8 @@ function f11(x: string | (() => string) | undefined) { if (isFunction(x)) { >isFunction(x) : boolean > : ^^^^^^^ ->isFunction : (value: T) => value is Extract -> : ^ ^^ ^^ ^^^^^ +>isFunction : (value: T) => value is Extract +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string | (() => string) | undefined > : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ @@ -198,8 +198,8 @@ function f12(x: string | (() => string) | undefined) { > : ^^^^^^ >getFunction(x) : () => string > : ^^^^^^ ->getFunction : (item: T) => Extract -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>getFunction : (item: T) => Extract +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | (() => string) | undefined > : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ @@ -247,8 +247,8 @@ type Extract2 = T extends U ? T extends V ? T : never : never; > : ^^^^^^^^^^^^^^^^^ function f20(x: Extract, Bar>, y: Extract, z: Extract2) { ->f20 : (x: Extract, Bar>, y: Extract, z: Extract2) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f20 : (x: Extract, Bar>, y: Extract, z: Extract2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Extract, Bar> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : Extract @@ -282,8 +282,8 @@ function f20(x: Extract, Bar>, y: Extract, z: E } function f21(x: Extract, Bar>, y: Extract, z: Extract2) { ->f21 : (x: Extract, Bar>, y: Extract, z: Extract2) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f21 : (x: Extract, Bar>, y: Extract, z: Extract2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Extract, Bar> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : Extract @@ -421,16 +421,16 @@ declare function toString2(value: Function): string ; > : ^^^^^^^^ function foo(value: T) { ->foo : (value: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>foo : (value: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >value : T > : ^ if (isFunction(value)) { >isFunction(value) : boolean > : ^^^^^^^ ->isFunction : (value: T_1) => value is Extract -> : ^^^^^^ ^^ ^^^^^ +>isFunction : (value: T_1) => value is Extract +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -651,14 +651,14 @@ declare function save(_response: IRootResponse): void; exportCommand(save); >exportCommand(save) : void > : ^^^^ ->exportCommand : (functionToCall: IExportCallback) => void -> : ^ ^^ ^^ ^^^^^ +>exportCommand : (functionToCall: IExportCallback) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >save : (_response: IRootResponse) => void > : ^ ^^ ^^^^^ declare function exportCommand(functionToCall: IExportCallback): void; ->exportCommand : (functionToCall: IExportCallback) => void -> : ^ ^^ ^^ ^^^^^ +>exportCommand : (functionToCall: IExportCallback) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >functionToCall : IExportCallback > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -726,8 +726,8 @@ declare function ff(x: Foo3): void; > : ^^^^^^^^^^^^^^ declare function gg(f: (x: Foo3) => void): void; ->gg : (f: (x: Foo3) => void) => void -> : ^ ^^ ^^ ^^^^^ +>gg : (f: (x: Foo3) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (x: Foo3) => void > : ^ ^^ ^^^^^ >x : Foo3 @@ -744,8 +744,8 @@ type Foo3 = T extends number ? { n: T } : { x: T }; gg(ff); >gg(ff) : void > : ^^^^ ->gg : (f: (x: Foo3) => void) => void -> : ^ ^^ ^^ ^^^^^ +>gg : (f: (x: Foo3) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ff : (x: Foo3) => void > : ^ ^^ ^^^^^ diff --git a/tests/baselines/reference/conditionalTypesSimplifyWhenTrivial.types b/tests/baselines/reference/conditionalTypesSimplifyWhenTrivial.types index 0fbd4d029befd..c18c8a6322d92 100644 --- a/tests/baselines/reference/conditionalTypesSimplifyWhenTrivial.types +++ b/tests/baselines/reference/conditionalTypesSimplifyWhenTrivial.types @@ -2,10 +2,10 @@ === conditionalTypesSimplifyWhenTrivial.ts === const fn1 = ( ->fn1 : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ ->( params: Pick>,): Params => params : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ +>fn1 : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>( params: Pick>,): Params => params : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ params: Pick>, >params : Pick> @@ -16,8 +16,8 @@ const fn1 = ( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function fn2(x: Exclude) { ->fn2 : (x: Exclude) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn2 : (x: Exclude) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : Exclude > : ^^^^^^^^^^^^^^^^^ @@ -37,10 +37,10 @@ function fn2(x: Exclude) { } const fn3 = ( ->fn3 : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ ->( params: Pick>,): Params => params : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ +>fn3 : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>( params: Pick>,): Params => params : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ params: Pick>, >params : Pick> @@ -51,8 +51,8 @@ const fn3 = ( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function fn4(x: Extract) { ->fn4 : (x: Extract) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn4 : (x: Extract) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : Extract > : ^^^^^^^^^^^^^ @@ -84,10 +84,10 @@ type ExcludeWithDefault = T extends U ? D : T; > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ const fn5 = ( ->fn5 : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ ->( params: Pick>,): Params => params : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ +>fn5 : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>( params: Pick>,): Params => params : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ params: Pick>, >params : Pick> @@ -98,8 +98,8 @@ const fn5 = ( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function fn6(x: ExcludeWithDefault) { ->fn6 : (x: ExcludeWithDefault) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn6 : (x: ExcludeWithDefault) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : ExcludeWithDefault > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -119,10 +119,10 @@ function fn6(x: ExcludeWithDefault) { } const fn7 = ( ->fn7 : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ ->( params: Pick>,): Params => params : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ +>fn7 : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>( params: Pick>,): Params => params : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ params: Pick>, >params : Pick> @@ -133,8 +133,8 @@ const fn7 = ( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function fn8(x: ExtractWithDefault) { ->fn8 : (x: ExtractWithDefault) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn8 : (x: ExtractWithDefault) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : ExtractWithDefault > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -158,10 +158,10 @@ type TemplatedConditional = TCheck extends TExt > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const fn9 = ( ->fn9 : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ ->( params: Pick>,): Params => params : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ +>fn9 : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>( params: Pick>,): Params => params : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ params: Pick>, >params : Pick> @@ -172,8 +172,8 @@ const fn9 = ( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function fn10(x: TemplatedConditional) { ->fn10 : (x: TemplatedConditional) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn10 : (x: TemplatedConditional) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : TemplatedConditional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -193,10 +193,10 @@ function fn10(x: TemplatedConditional) { } const fn11 = ( ->fn11 : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ ->( params: Pick>,): Params => params : (params: Pick>) => Params -> : ^ ^^ ^^ ^^^^^ +>fn11 : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>( params: Pick>,): Params => params : (params: Pick>) => Params +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ params: Pick>, >params : Pick> @@ -207,8 +207,8 @@ const fn11 = ( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function fn12(x: TemplatedConditional) { ->fn12 : (x: TemplatedConditional) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn12 : (x: TemplatedConditional) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : TemplatedConditional > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/constAssertions.types b/tests/baselines/reference/constAssertions.types index e64ff4ce6e3fa..55181a838b2e6 100644 --- a/tests/baselines/reference/constAssertions.types +++ b/tests/baselines/reference/constAssertions.types @@ -564,8 +564,8 @@ let q5 = { x: 10, y: 20 }; > : ^^ declare function id(x: T): T; ->id : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>id : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -600,8 +600,8 @@ let e3 = id(1) as const; // Error > : ^ >id(1) : 1 > : ^ ->id : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>id : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/contextSensitiveReturnTypeInference.types b/tests/baselines/reference/contextSensitiveReturnTypeInference.types index f8e0f5c915746..00d00bf4c9533 100644 --- a/tests/baselines/reference/contextSensitiveReturnTypeInference.types +++ b/tests/baselines/reference/contextSensitiveReturnTypeInference.types @@ -10,8 +10,8 @@ interface IData { } declare function test( ->test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ getter: (deps: TDependencies, data: IData) => any, >getter : (deps: TDependencies, data: IData) => any @@ -42,8 +42,8 @@ const DEPS = { test( >test( (deps, data) => ({ fn1: function() { return deps.foo }, fn2: data.bar }), DEPS) : any ->test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ (deps, data) => ({ >(deps, data) => ({ fn1: function() { return deps.foo }, fn2: data.bar }) : (deps: { foo: number; }, data: IData) => { fn1: () => number; fn2: boolean; } @@ -88,8 +88,8 @@ test( test( >test( (deps: typeof DEPS, data) => ({ fn1: function() { return deps.foo }, fn2: data.bar }), DEPS) : any ->test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ (deps: typeof DEPS, data) => ({ >(deps: typeof DEPS, data) => ({ fn1: function() { return deps.foo }, fn2: data.bar }) : (deps: typeof DEPS, data: IData) => { fn1: () => number; fn2: boolean; } @@ -136,8 +136,8 @@ test( test( >test( (deps, data) => ({ fn1: () => deps.foo, fn2: data.bar }), DEPS) : any ->test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ (deps, data) => ({ >(deps, data) => ({ fn1: () => deps.foo, fn2: data.bar }) : (deps: { foo: number; }, data: IData) => { fn1: () => number; fn2: boolean; } @@ -182,8 +182,8 @@ test( test( >test( (deps, data) => { return { fn1() { return deps.foo }, fn2: data.bar } }, DEPS) : any ->test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ (deps, data) => { >(deps, data) => { return { fn1() { return deps.foo }, fn2: data.bar } } : (deps: { foo: number; }, data: IData) => { fn1(): number; fn2: boolean; } @@ -226,8 +226,8 @@ test( test( >test( (deps) => ({ fn1() { return deps.foo }, fn2: 1 }), DEPS) : any ->test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test : (getter: (deps: TDependencies, data: IData) => any, deps: TDependencies) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ (deps) => ({ >(deps) => ({ fn1() { return deps.foo }, fn2: 1 }) : (deps: { foo: number; }) => { fn1(): number; fn2: number; } diff --git a/tests/baselines/reference/contextualComputedNonBindablePropertyType.types b/tests/baselines/reference/contextualComputedNonBindablePropertyType.types index 60cbbb55f96ea..1f272065d1f24 100644 --- a/tests/baselines/reference/contextualComputedNonBindablePropertyType.types +++ b/tests/baselines/reference/contextualComputedNonBindablePropertyType.types @@ -8,8 +8,8 @@ declare function testD(): "d"; > : ^^^^^^ declare function forceMatch(matched: { ->forceMatch : (matched: { [key in keyof T]: key; }) => void -> : ^ ^^ ^^ ^^^^^ +>forceMatch : (matched: { [key in keyof T]: key; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >matched : { [key in keyof T]: key; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -19,8 +19,8 @@ declare function forceMatch(matched: { forceMatch({ >forceMatch({ [testD()]: "d",}) : void > : ^^^^ ->forceMatch : (matched: { [key in keyof T]: key; }) => void -> : ^ ^^ ^^ ^^^^^ +>forceMatch : (matched: { [key in keyof T]: key; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ [testD()]: "d",} : { d: "d"; } > : ^^^^^^^^^^^ @@ -37,8 +37,8 @@ forceMatch({ }); declare function forceMatch2(matched: { ->forceMatch2 : (matched: { [key in keyof T]: ({ key }: { key: key; }) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>forceMatch2 : (matched: { [key in keyof T]: ({ key }: { key: key; }) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >matched : { [key in keyof T]: ({ key }: { key: key; }) => void; } > : ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ @@ -53,8 +53,8 @@ declare function forceMatch2(matched: { forceMatch2({ >forceMatch2({ [testD()]: ({ key }) => {},}) : void > : ^^^^ ->forceMatch2 : (matched: { [key in keyof T]: ({ key }: { key: key; }) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>forceMatch2 : (matched: { [key in keyof T]: ({ key }: { key: key; }) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ [testD()]: ({ key }) => {},} : { d: ({ key }: { key: "d"; }) => void; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextualOverloadListFromArrayUnion.types b/tests/baselines/reference/contextualOverloadListFromArrayUnion.types index 77298efc245ef..03fd498013998 100644 --- a/tests/baselines/reference/contextualOverloadListFromArrayUnion.types +++ b/tests/baselines/reference/contextualOverloadListFromArrayUnion.types @@ -10,12 +10,12 @@ export const yThen = y.map(item => item.length); > : ^^^^^^^^ >y.map(item => item.length) : number[] > : ^^^^^^^^ ->y.map : ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>y.map : ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >y : never[] | string[] > : ^^^^^^^^^^^^^^^^^^ ->map : ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>map : ((callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >item => item.length : (item: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >item : string @@ -37,12 +37,12 @@ export const yThen = y.map(item => item.length); > : ^^^^^^^^ >y.map(item => item.length) : number[] > : ^^^^^^^^ ->y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: number[], index: number, array: number[][]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>y.map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: number[], index: number, array: number[][]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >y : string[] | number[][] > : ^^^^^^^^^^^^^^^^^^^^^ ->map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: number[], index: number, array: number[][]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>map : ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: number[], index: number, array: number[][]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >item => item.length : (item: string | number[]) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : string | number[] @@ -110,8 +110,8 @@ interface Task { } export function series(tasks: Task[], callback: Callback): void { ->series : (tasks: Task[], callback: Callback) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>series : (tasks: Task[], callback: Callback) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >tasks : Task[] > : ^^^^^^^^^ >callback : Callback @@ -218,8 +218,8 @@ export function series(tasks: Task[], callback: Callback): void { series([ >series([ cb => setTimeout(() => cb(null, 1), 300), cb => setTimeout(() => cb(null, 2), 200), cb => setTimeout(() => cb(null, 3), 100),], (error, results) => { if (error) { console.error(error) } else { console.log(results) }}) : void > : ^^^^ ->series : (tasks: Task[], callback: Callback) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>series : (tasks: Task[], callback: Callback) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >[ cb => setTimeout(() => cb(null, 1), 300), cb => setTimeout(() => cb(null, 2), 200), cb => setTimeout(() => cb(null, 3), 100),] : ((cb: Callback) => number)[] > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextualSignatureInstantiation4.types b/tests/baselines/reference/contextualSignatureInstantiation4.types index ef73a4c0e6413..0c192d7c103ac 100644 --- a/tests/baselines/reference/contextualSignatureInstantiation4.types +++ b/tests/baselines/reference/contextualSignatureInstantiation4.types @@ -12,8 +12,8 @@ declare class Banana { constructor(a: string, property: T) } > : ^ declare function fruitFactory1(Fruit: new (...args: any[]) => TFruit): TFruit ->fruitFactory1 : (Fruit: new (...args: any[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory1 : (Fruit: new (...args: any[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Fruit : new (...args: any[]) => TFruit > : ^^^^^^^^ ^^ ^^^^^ >args : any[] @@ -24,14 +24,14 @@ const banana1 = fruitFactory1(Banana) // Banana > : ^^^^^^^^^^^ >fruitFactory1(Banana) : Banana > : ^^^^^^^^^^^ ->fruitFactory1 : (Fruit: new (...args: any[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory1 : (Fruit: new (...args: any[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Banana : typeof Banana > : ^^^^^^^^^^^^^ declare function fruitFactory2(Fruit: new (a: string, ...args: any[]) => TFruit): TFruit ->fruitFactory2 : (Fruit: new (a: string, ...args: any[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory2 : (Fruit: new (a: string, ...args: any[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Fruit : new (a: string, ...args: any[]) => TFruit > : ^^^^^ ^^ ^^^^^ ^^ ^^^^^ >a : string @@ -44,14 +44,14 @@ const banana2 = fruitFactory2(Banana) // Banana > : ^^^^^^^^^^^ >fruitFactory2(Banana) : Banana > : ^^^^^^^^^^^ ->fruitFactory2 : (Fruit: new (a: string, ...args: any[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory2 : (Fruit: new (a: string, ...args: any[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Banana : typeof Banana > : ^^^^^^^^^^^^^ declare function fruitFactory3(Fruit: new (a: string, s: "foo", ...args: any[]) => TFruit): TFruit ->fruitFactory3 : (Fruit: new (a: string, s: "foo", ...args: any[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory3 : (Fruit: new (a: string, s: "foo", ...args: any[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Fruit : new (a: string, s: "foo", ...args: any[]) => TFruit > : ^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >a : string @@ -66,14 +66,14 @@ const banana3 = fruitFactory3(Banana) // Banana<"foo"> > : ^^^^^^^^^^^^^ >fruitFactory3(Banana) : Banana<"foo"> > : ^^^^^^^^^^^^^ ->fruitFactory3 : (Fruit: new (a: string, s: "foo", ...args: any[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory3 : (Fruit: new (a: string, s: "foo", ...args: any[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Banana : typeof Banana > : ^^^^^^^^^^^^^ declare function fruitFactory4(Fruit: new (a: string, ...args: "foo"[]) => TFruit): TFruit ->fruitFactory4 : (Fruit: new (a: string, ...args: "foo"[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory4 : (Fruit: new (a: string, ...args: "foo"[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Fruit : new (a: string, ...args: "foo"[]) => TFruit > : ^^^^^ ^^ ^^^^^ ^^ ^^^^^ >a : string @@ -86,14 +86,14 @@ const banana4 = fruitFactory4(Banana) // Banana<"foo"> > : ^^^^^^^^^^^^^ >fruitFactory4(Banana) : Banana<"foo"> > : ^^^^^^^^^^^^^ ->fruitFactory4 : (Fruit: new (a: string, ...args: "foo"[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory4 : (Fruit: new (a: string, ...args: "foo"[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Banana : typeof Banana > : ^^^^^^^^^^^^^ declare function fruitFactory5(Fruit: new (...args: "foo"[]) => TFruit): TFruit ->fruitFactory5 : (Fruit: new (...args: "foo"[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory5 : (Fruit: new (...args: "foo"[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Fruit : new (...args: "foo"[]) => TFruit > : ^^^^^^^^ ^^ ^^^^^ >args : "foo"[] @@ -104,8 +104,8 @@ const banana5 = fruitFactory5(Banana) // Banana<"foo"> > : ^^^^^^^^^^^^^ >fruitFactory5(Banana) : Banana<"foo"> > : ^^^^^^^^^^^^^ ->fruitFactory5 : (Fruit: new (...args: "foo"[]) => TFruit) => TFruit -> : ^ ^^ ^^ ^^^^^ +>fruitFactory5 : (Fruit: new (...args: "foo"[]) => TFruit) => TFruit +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Banana : typeof Banana > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextualTypeCaching.types b/tests/baselines/reference/contextualTypeCaching.types index 468ad19af18c8..d91b505b6bb0e 100644 --- a/tests/baselines/reference/contextualTypeCaching.types +++ b/tests/baselines/reference/contextualTypeCaching.types @@ -109,8 +109,8 @@ interface Optimization { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } declare const A: ( ->A : (obj: T, prop: P, factory: () => T[P]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>A : (obj: T, prop: P, factory: () => T[P]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ obj: T, >obj : T @@ -136,8 +136,8 @@ export const applyOptimizationDefaults = (optimization: Optimization) => { A(optimization, "minimizer", () => [ >A(optimization, "minimizer", () => [ { apply: (compiler) => {}, }, ]) : void > : ^^^^ ->A : (obj: T, prop: P, factory: () => T[P]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>A : (obj: T, prop: P, factory: () => T[P]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >optimization : Optimization > : ^^^^^^^^^^^^ >"minimizer" : "minimizer" diff --git a/tests/baselines/reference/contextualTypeSelfReferencing.types b/tests/baselines/reference/contextualTypeSelfReferencing.types index 0f6e839781322..6382be5470e25 100644 --- a/tests/baselines/reference/contextualTypeSelfReferencing.types +++ b/tests/baselines/reference/contextualTypeSelfReferencing.types @@ -15,24 +15,24 @@ type narrow = def extends string }; declare const parse: (def: narrow) => def; ->parse : (def: narrow) => def -> : ^ ^^ ^^ ^^^^^ +>parse : (def: narrow) => def +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >def : narrow > : ^^^^^^^^^^^ const result = parse([{ a: "foo" }]); ->result : [{ a: "foo"; }] -> : ^^^^^^^^^^^^^^^ ->parse([{ a: "foo" }]) : [{ a: "foo"; }] -> : ^^^^^^^^^^^^^^^ ->parse : (def: narrow) => def -> : ^ ^^ ^^ ^^^^^ ->[{ a: "foo" }] : [{ a: "foo"; }] -> : ^^^^^^^^^^^^^^^ ->{ a: "foo" } : { a: "foo"; } -> : ^^^^^^^^^^^^^ ->a : "foo" -> : ^^^^^ +>result : [{ a: string; }] +> : ^^^^^^^^^^^^^^^^ +>parse([{ a: "foo" }]) : [{ a: string; }] +> : ^^^^^^^^^^^^^^^^ +>parse : (def: narrow) => def +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>[{ a: "foo" }] : [{ a: string; }] +> : ^^^^^^^^^^^^^^^^ +>{ a: "foo" } : { a: string; } +> : ^^^^^^^^^^^^^^ +>a : string +> : ^^^^^^ >"foo" : "foo" > : ^^^^^ diff --git a/tests/baselines/reference/contextualTypingOfOptionalMembers.types b/tests/baselines/reference/contextualTypingOfOptionalMembers.types index db3692a5b60b1..e3ccbfba46f7d 100644 --- a/tests/baselines/reference/contextualTypingOfOptionalMembers.types +++ b/tests/baselines/reference/contextualTypingOfOptionalMembers.types @@ -28,16 +28,16 @@ interface Options { } declare function app>(obj: Options): void; ->app : >(obj: Options) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>app : >(obj: Options) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Options > : ^^^^^^^^^^^^^^^^^^^^^^^ app({ >app({ state: 100, actions: { foo: s => s // Should be typed number => number }, view: (s, a) => undefined as any,}) : void > : ^^^^ ->app : >(obj: Options) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>app : >(obj: Options) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ state: 100, actions: { foo: s => s // Should be typed number => number }, view: (s, a) => undefined as any,} : { state: number; actions: { foo: (s: number) => number; }; view: (s: number, a: { foo: (s: number) => number; }) => any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ @@ -131,16 +131,16 @@ interface Options2 { } declare function app2>(obj: Options2): void; ->app2 : >(obj: Options2) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>app2 : >(obj: Options2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Options2 > : ^^^^^^^^^^^^^^^^^^^^^^^^ app2({ >app2({ state: 100, actions: { foo: s => s // Should be typed number => number }, view: (s, a) => undefined as any,}) : void > : ^^^^ ->app2 : >(obj: Options2) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>app2 : >(obj: Options2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ state: 100, actions: { foo: s => s // Should be typed number => number }, view: (s, a) => undefined as any,} : { state: number; actions: { foo: (s: number) => number; }; view: (s: number, a: { foo: (s: number) => number; }) => any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ @@ -190,16 +190,16 @@ type ActionsArray = ((state: State) => State)[]; > : ^^^^^ declare function app3>(obj: Options): void; ->app3 : >(obj: Options) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>app3 : >(obj: Options) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Options > : ^^^^^^^^^^^^^^^^^^^^^^^ app3({ >app3({ state: 100, actions: [ s => s // Should be typed number => number ], view: (s, a) => undefined as any,}) : void > : ^^^^ ->app3 : >(obj: Options) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>app3 : >(obj: Options) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ state: 100, actions: [ s => s // Should be typed number => number ], view: (s, a) => undefined as any,} : { state: number; actions: ((s: number) => number)[]; view: (s: number, a: ((s: number) => number)[]) => any; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ @@ -253,8 +253,8 @@ interface ActionsObjectOr { } declare function App4>(props: Options["actions"] & { state: State }): JSX.Element; ->App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >props : (string | Actions) & { state: State; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >state : State @@ -267,8 +267,8 @@ const a = s} />; // TODO: should be number => number > : ^^^^^^^^^^^ > s} /> : JSX.Element > : ^^^^^^^^^^^ ->App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>App4 : >(props: Options["actions"] & { state: State; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >state : number > : ^^^^^^ >100 : 100 diff --git a/tests/baselines/reference/contextualTypingReturnStatementWithReturnTypeAnnotation.types b/tests/baselines/reference/contextualTypingReturnStatementWithReturnTypeAnnotation.types index 67ccb64b9f7a5..e78c95a6f9857 100644 --- a/tests/baselines/reference/contextualTypingReturnStatementWithReturnTypeAnnotation.types +++ b/tests/baselines/reference/contextualTypingReturnStatementWithReturnTypeAnnotation.types @@ -12,8 +12,8 @@ declare function isString(text: unknown): text is string; > : ^^^^^^^ declare function getPropFromRaw( ->getPropFromRaw : (prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropFromRaw : (prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ prop: "files" | "include" | "exclude" | "references", >prop : "files" | "include" | "exclude" | "references" @@ -43,8 +43,8 @@ function getSpecsFromRaw( return getPropFromRaw(prop, isString, "string"); >getPropFromRaw(prop, isString, "string") : PropOfRaw > : ^^^^^^^^^^^^^^^^^ ->getPropFromRaw : (prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropFromRaw : (prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >prop : "files" | "include" | "exclude" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >isString : (text: unknown) => text is string diff --git a/tests/baselines/reference/contextuallyTypeAsyncFunctionReturnTypeFromUnion.types b/tests/baselines/reference/contextuallyTypeAsyncFunctionReturnTypeFromUnion.types index 162ab46ae510a..f8ff755dc2571 100644 --- a/tests/baselines/reference/contextuallyTypeAsyncFunctionReturnTypeFromUnion.types +++ b/tests/baselines/reference/contextuallyTypeAsyncFunctionReturnTypeFromUnion.types @@ -15,8 +15,8 @@ declare class StateMachine { } declare function createMachine(implementations: { ->createMachine : (implementations: { services: Record Promise | StateMachine>; }) => void -> : ^ ^^ ^^ ^^^^^ +>createMachine : (implementations: { services: Record Promise | StateMachine>; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >implementations : { services: Record Promise | StateMachine>; } > : ^^^^^^^^^^^^ ^^^ @@ -29,8 +29,8 @@ declare function createMachine(implementations: { createMachine<{ count: number }>({ >createMachine<{ count: number }>({ services: { test: async () => Promise.reject("some err"), async test2() { return Promise.reject("some err"); }, },}) : void > : ^^^^ ->createMachine : (implementations: { services: Record Promise | StateMachine>; }) => void -> : ^ ^^ ^^ ^^^^^ +>createMachine : (implementations: { services: Record Promise | StateMachine>; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >count : number > : ^^^^^^ >{ services: { test: async () => Promise.reject("some err"), async test2() { return Promise.reject("some err"); }, },} : { services: { test: () => Promise<{ count: number; }>; test2(): Promise<{ count: number; }>; }; } @@ -49,12 +49,12 @@ createMachine<{ count: number }>({ > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >Promise.reject("some err") : Promise<{ count: number; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"some err" : "some err" > : ^^^^^^^^^^ @@ -65,12 +65,12 @@ createMachine<{ count: number }>({ return Promise.reject("some err"); >Promise.reject("some err") : Promise<{ count: number; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"some err" : "some err" > : ^^^^^^^^^^ @@ -91,12 +91,12 @@ function fn1(): () => Promise<{ count: number }> | StateMachine<{ count: number > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >Promise.reject('some err') : Promise<{ count: number; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >'some err' : "some err" > : ^^^^^^^^^^ } @@ -119,14 +119,14 @@ const cb1: LoadCallback = async () => load().then(m => m); > : ^^^^^^^^^^^^^^^^^^^^^^ >load().then(m => m) : Promise > : ^^^^^^^^^^^^^^^^ ->load().then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>load().then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >load() : Promise > : ^^^^^^^^^^^^^^^^ >load : () => Promise > : ^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m => m : (m: boolean) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^^ >m : boolean @@ -151,14 +151,14 @@ const cb3: LoadCallback = () => load().then(m => m); > : ^^^^^^^^^^^^^^^^^^^^^^ >load().then(m => m) : Promise > : ^^^^^^^^^^^^^^^^ ->load().then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>load().then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >load() : Promise > : ^^^^^^^^^^^^^^^^ >load : () => Promise > : ^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >m => m : (m: boolean) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^^ >m : boolean diff --git a/tests/baselines/reference/contextuallyTypeGeneratorReturnTypeFromUnion.types b/tests/baselines/reference/contextuallyTypeGeneratorReturnTypeFromUnion.types index f9093e1a8ddb1..9481590eb5746 100644 --- a/tests/baselines/reference/contextuallyTypeGeneratorReturnTypeFromUnion.types +++ b/tests/baselines/reference/contextuallyTypeGeneratorReturnTypeFromUnion.types @@ -49,12 +49,12 @@ const test2: Action2 = async function* () { > : ^^^^^^ >Promise.resolve('') : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >'' : "" > : ^^ diff --git a/tests/baselines/reference/contextuallyTypedBooleanLiterals.types b/tests/baselines/reference/contextuallyTypedBooleanLiterals.types index bf9818ad6bd80..35fdcc8f5eecb 100644 --- a/tests/baselines/reference/contextuallyTypedBooleanLiterals.types +++ b/tests/baselines/reference/contextuallyTypedBooleanLiterals.types @@ -19,8 +19,8 @@ type Box = { } declare function box(value: T): Box; ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -29,8 +29,8 @@ const bn1 = box(0); // Box > : ^^^^^^^^^^^ >box(0) : Box > : ^^^^^^^^^^^ ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >0 : 0 > : ^ @@ -39,8 +39,8 @@ const bn2: Box = box(0); // Ok > : ^^^^^^^^^^^ >box(0) : Box > : ^^^^^^^^^^^ ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >0 : 0 > : ^ @@ -49,8 +49,8 @@ const bb1 = box(false); // Box > : ^^^^^^^^^^^^ >box(false) : Box > : ^^^^^^^^^^^^ ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >false : false > : ^^^^^ @@ -59,8 +59,8 @@ const bb2: Box = box(false); // Error, box not assignable to Bo > : ^^^^^^^^^^^^ >box(false) : Box > : ^^^^^^^^^^^^ ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >false : false > : ^^^^^ @@ -75,8 +75,8 @@ interface Observable } declare function observable(value: T): Observable; ->observable : (value: T) => Observable -> : ^ ^^ ^^ ^^^^^ +>observable : (value: T) => Observable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -85,8 +85,8 @@ const x: Observable = observable(false); > : ^^^^^^^^^^^^^^^^^^^ >observable(false) : Observable > : ^^^^^^^^^^^^^^^^^^^ ->observable : (value: T) => Observable -> : ^ ^^ ^^ ^^^^^ +>observable : (value: T) => Observable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >false : false > : ^^^^^ diff --git a/tests/baselines/reference/contextuallyTypedIifeStrict.types b/tests/baselines/reference/contextuallyTypedIifeStrict.types index e19ebb1f8399a..eed02f20f2273 100644 --- a/tests/baselines/reference/contextuallyTypedIifeStrict.types +++ b/tests/baselines/reference/contextuallyTypedIifeStrict.types @@ -289,12 +289,12 @@ > : ^^^^^^^ >rest.map(n => n > 0) : boolean[] > : ^^^^^^^^^ ->rest.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>rest.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >rest : [number, number] > : ^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n > 0 : (n: number) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^ >n : number diff --git a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types index 778e058377b75..c8e5d483d584e 100644 --- a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types @@ -4,8 +4,8 @@ // repro from https://github.com/microsoft/TypeScript/issues/55164 declare function match(cb: (value: T) => boolean): T; ->match : (cb: (value: T) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>match : (cb: (value: T) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : (value: T) => boolean > : ^ ^^ ^^^^^ >value : T @@ -32,8 +32,8 @@ foo({ y: match(y => y > 0) }) > : ^^^^^^^^^^^^^^^^^^ >match(y => y > 0) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->match : (cb: (value: T) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>match : (cb: (value: T) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >y => y > 0 : (y: number | undefined) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number | undefined @@ -60,8 +60,8 @@ foo2([match(y => y > 0)]) > : ^^^^^^^^^^^^^^^^^^^^ >match(y => y > 0) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->match : (cb: (value: T) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>match : (cb: (value: T) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >y => y > 0 : (y: number | undefined) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number | undefined diff --git a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types index ff84c56b31675..3549e565df364 100644 --- a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=true).types @@ -4,8 +4,8 @@ // repro from https://github.com/microsoft/TypeScript/issues/55164 declare function match(cb: (value: T) => boolean): T; ->match : (cb: (value: T) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>match : (cb: (value: T) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : (value: T) => boolean > : ^ ^^ ^^^^^ >value : T @@ -32,8 +32,8 @@ foo({ y: match(y => y > 0) }) > : ^^^^^^ >match(y => y > 0) : number > : ^^^^^^ ->match : (cb: (value: T) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>match : (cb: (value: T) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >y => y > 0 : (y: number) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^ >y : number @@ -60,8 +60,8 @@ foo2([match(y => y > 0)]) > : ^^^^^^^^ >match(y => y > 0) : number > : ^^^^^^ ->match : (cb: (value: T) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>match : (cb: (value: T) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >y => y > 0 : (y: number) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^ >y : number diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types index 2aac7cab5e6a8..aabab1d35435c 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers1.types @@ -2,8 +2,8 @@ === contextuallyTypedParametersWithInitializers1.ts === declare function id1(input: T): T; ->id1 : (input: T) => T -> : ^ ^^ ^^ ^^^^^ +>id1 : (input: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >input : T > : ^ @@ -60,8 +60,8 @@ const f11 = id1(function ({ foo = 42 }) { return foo }); > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id1(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number | undefined; }) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->id1 : (input: T) => T -> : ^ ^^ ^^ ^^^^^ +>id1 : (input: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -136,8 +136,8 @@ const f21 = id1(function (foo = 42) { return foo }); > : ^ ^^^^^^^^^^^^^^^^^^^^ >id1(function (foo = 42) { return foo }) : (foo?: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^^ ->id1 : (input: T) => T -> : ^ ^^ ^^ ^^^^^ +>id1 : (input: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >function (foo = 42) { return foo } : (foo?: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -274,8 +274,8 @@ const f8: () => any = (...x) => 0; // [] > : ^ declare function g1(x: T): T; ->g1 : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>g1 : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -314,8 +314,8 @@ declare function g6 any>(x: T): T; g1((x = 1) => 0); // number >g1((x = 1) => 0) : (x?: number) => 0 > : ^ ^^^^^^^^^^^^^^^ ->g1 : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>g1 : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(x = 1) => 0 : (x?: number) => 0 > : ^ ^^^^^^^^^^^^^^^ >x : number @@ -422,8 +422,8 @@ g6((...x) => 0); // [] // Repro from #28816 function id(input: T): T { return input } ->id : (input: T) => T -> : ^ ^^ ^^ ^^^^^ +>id : (input: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >input : T > : ^ >input : T @@ -447,8 +447,8 @@ const newGetFoo = id(getFoo); > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id(getFoo) : ({ foo }: { foo?: number | undefined; }) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->id : (input: T) => T -> : ^ ^^ ^^ ^^^^^ +>id : (input: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >getFoo : ({ foo }: { foo?: number | undefined; }) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -457,8 +457,8 @@ const newGetFoo2 = id(function getFoo ({ foo = 42 }) { > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id(function getFoo ({ foo = 42 }) { return foo;}) : ({ foo }: { foo?: number | undefined; }) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->id : (input: T) => T -> : ^ ^^ ^^ ^^^^^ +>id : (input: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >function getFoo ({ foo = 42 }) { return foo;} : ({ foo }: { foo?: number | undefined; }) => number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getFoo : ({ foo }: { foo?: number | undefined; }) => number diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types index 5e445caa8ad11..c348f1089f0ec 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers2.types @@ -2,8 +2,8 @@ === contextuallyTypedParametersWithInitializers2.ts === declare function test1< ->test1 : unknown>>(context: TContext, methods: TMethods) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>test1 : unknown>>(context: TContext, methods: TMethods) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ TContext, TMethods extends Record unknown>, @@ -21,8 +21,8 @@ declare function test1< test1( >test1( { count: 0, }, { checkLimit: (ctx, max = 500) => {}, hasAccess: (ctx, user: { name: string }) => {}, },) : void > : ^^^^ ->test1 : unknown>>(context: TContext, methods: TMethods) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>test1 : unknown>>(context: TContext, methods: TMethods) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ { >{ count: 0, } : { count: number; } > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types index 22cce6a1e3cf0..7035edbf5f17b 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers3.types @@ -14,8 +14,8 @@ interface GraphActions { } export declare function create(config: T): void; ->create : (config: T) => void -> : ^ ^^ ^^ ^^^^^ +>create : (config: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >config : T > : ^ @@ -28,8 +28,8 @@ declare function takesDirection(direction: CanvasDirection): void; create({ >create({ setDirection: (direction = "RIGHT") => { takesDirection(direction); },}) : void > : ^^^^ ->create : (config: T) => void -> : ^ ^^ ^^ ^^^^^ +>create : (config: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ setDirection: (direction = "RIGHT") => { takesDirection(direction); },} : { setDirection: (direction?: CanvasDirection) => void; } > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types b/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types index 4dfd369a9c09a..976e01a66a486 100644 --- a/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types +++ b/tests/baselines/reference/contextuallyTypedParametersWithInitializers4.types @@ -2,8 +2,8 @@ === contextuallyTypedParametersWithInitializers4.ts === declare function test< ->test : unknown>>(context: TContext, methods: TMethods) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>test : unknown>>(context: TContext, methods: TMethods) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ TContext, TMethods extends Record unknown>, @@ -21,8 +21,8 @@ declare function test< test( >test( { count: 0, }, { checkLimit: (ctx, max = 3) => {}, },) : void > : ^^^^ ->test : unknown>>(context: TContext, methods: TMethods) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>test : unknown>>(context: TContext, methods: TMethods) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ { >{ count: 0, } : { count: number; } > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contravariantInferenceAndTypeGuard.types b/tests/baselines/reference/contravariantInferenceAndTypeGuard.types index f4d1809ed73b2..bac126373e1d4 100644 --- a/tests/baselines/reference/contravariantInferenceAndTypeGuard.types +++ b/tests/baselines/reference/contravariantInferenceAndTypeGuard.types @@ -43,30 +43,30 @@ declare class List { > : ^^^^^^^^^^^ filter(fn: FilterFn, context: TContext): List; ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn): List; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext_1): List; (fn: IteratorFn): List; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >fn : FilterFn > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >context : TContext > : ^^^^^^^^ filter(fn: FilterFn): List; ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >fn : FilterFn> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ filter(fn: IteratorFn, context: TContext): List; ->filter : { (fn: FilterFn, context: TContext_1): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>filter : { (fn: FilterFn, context: TContext_1): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >fn : IteratorFn > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >context : TContext > : ^^^^^^^^ filter(fn: IteratorFn): List; ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn): List; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >fn : IteratorFn> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -88,12 +88,12 @@ const filter1 = list2.filter(function(item, node, list): item is Test { > : ^^^^^^^^^^ >list2.filter(function(item, node, list): item is Test { this.b; // $ExpectType string item; // $ExpectType Test | null node; // $ExpectType ListItem list; // $ExpectType List return !!item;}, {b: 'c'}) : List > : ^^^^^^^^^^ ->list2.filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn>): List; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>list2.filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn>): List; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >list2 : List > : ^^^^^^^^^^^^^^^^^ ->filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn>): List; } -> : ^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>filter : { (fn: FilterFn, context: TContext): List; (fn: FilterFn>): List; (fn: IteratorFn, context: TContext): List; (fn: IteratorFn>): List; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >function(item, node, list): item is Test { this.b; // $ExpectType string item; // $ExpectType Test | null node; // $ExpectType ListItem list; // $ExpectType List return !!item;} : (this: { b: string; }, item: Test | null, node: ListItem, list: List) => item is Test > : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >item : Test | null diff --git a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types index fd7dc6f5bfc4b..887ba65ffa8c2 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types +++ b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunction.types @@ -24,8 +24,8 @@ type Funcs> = { } declare function foo>(fns: Funcs): [A, B] ->foo : >(fns: Funcs) => [A, B] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>foo : >(fns: Funcs) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >fns : Funcs > : ^^^^^^^^^^^ @@ -34,8 +34,8 @@ const result = foo({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo({ bar: { fn: (a: string) => {}, thing: 'asd', },}) : [string, { bar: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : >(fns: Funcs) => [A, B] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>foo : >(fns: Funcs) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ bar: { fn: (a: string) => {}, thing: 'asd', },} : { bar: { fn: (a: string) => void; thing: string; }; } > : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types index e12eb8bad98cb..3083fd3c60cfb 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types +++ b/tests/baselines/reference/contravariantOnlyInferenceFromAnnotatedFunctionJs.types @@ -14,8 +14,8 @@ * @returns {[A, B]} */ function foo(fns) { ->foo : >(fns: Funcs) => [A, B] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>foo : >(fns: Funcs) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >fns : Funcs > : ^^^^^^^^^^^ @@ -28,8 +28,8 @@ const result = foo({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo({ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },}) : [string, { bar: string; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : >(fns: Funcs) => [A, B] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>foo : >(fns: Funcs) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ bar: { fn: /** @param {string} a */ (a) => {}, thing: "asd", },} : { bar: { fn: (a: string) => void; thing: string; }; } > : ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types index 244f7268b84b4..c5a66b4453576 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types +++ b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameter.types @@ -4,8 +4,8 @@ // repro https://github.com/microsoft/TypeScript/issues/55394 declare function filter(predicate: (value: T, index: number) => boolean): T; ->filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>filter : (predicate: (value: T, index: number) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >predicate : (value: T, index: number) => boolean > : ^ ^^ ^^ ^^ ^^^^^ >value : T @@ -18,8 +18,8 @@ const a = filter((pose?: number) => true); > : ^^^^^^^^^^^^^^^^^^ >filter((pose?: number) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>filter : (predicate: (value: T, index: number) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(pose?: number) => true : (pose?: number) => true > : ^ ^^^ ^^^^^^^^^ >pose : number | undefined @@ -32,8 +32,8 @@ const b = filter((pose?: number, _?: number) => true); > : ^^^^^^^^^^^^^^^^^^ >filter((pose?: number, _?: number) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>filter : (predicate: (value: T, index: number) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(pose?: number, _?: number) => true : (pose?: number, _?: number) => true > : ^ ^^^ ^^ ^^^ ^^^^^^^^^ >pose : number | undefined diff --git a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types index a6a181075b918..bdbd05e2a713b 100644 --- a/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types +++ b/tests/baselines/reference/contravariantOnlyInferenceWithAnnotatedOptionalParameterJs.types @@ -7,8 +7,8 @@ * @returns {T} */ function filter(predicate) { ->filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>filter : (predicate: (value: T, index: number) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >predicate : (value: T, index: number) => boolean > : ^ ^^ ^^ ^^ ^^^^^ @@ -21,8 +21,8 @@ const a = filter( > : ^^^^^^^^^^^^^^^^^^ >filter( /** * @param {number} [pose] */ (pose) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>filter : (predicate: (value: T, index: number) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ /** * @param {number} [pose] @@ -42,8 +42,8 @@ const b = filter( > : ^^^^^^^^^^^^^^^^^^ >filter( /** * @param {number} [pose] * @param {number} [_] */ (pose, _) => true) : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->filter : (predicate: (value: T, index: number) => boolean) => T -> : ^ ^^ ^^ ^^^^^ +>filter : (predicate: (value: T, index: number) => boolean) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ /** * @param {number} [pose] diff --git a/tests/baselines/reference/contravariantTypeAliasInference.types b/tests/baselines/reference/contravariantTypeAliasInference.types index 7f2ca64c1e3a9..c49807dfc180d 100644 --- a/tests/baselines/reference/contravariantTypeAliasInference.types +++ b/tests/baselines/reference/contravariantTypeAliasInference.types @@ -22,8 +22,8 @@ declare let f2: Func1<"a">; > : ^^^^^^^^^^ declare function foo(f1: Func1, f2: Func1): void; ->foo : (f1: Func1, f2: Func1) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (f1: Func1, f2: Func1) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f1 : Func1 > : ^^^^^^^^ >f2 : Func1 @@ -32,8 +32,8 @@ declare function foo(f1: Func1, f2: Func1): void; foo(f1, f2); >foo(f1, f2) : void > : ^^^^ ->foo : (f1: Func1, f2: Func1) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (f1: Func1, f2: Func1) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f1 : Func1 > : ^^^^^^^^^^^^^ >f2 : Func1<"a"> @@ -48,8 +48,8 @@ declare let g2: Func2<"a">; > : ^^^^^^^^^^ declare function bar(g1: Func2, g2: Func2): void; ->bar : (g1: Func2, g2: Func2) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bar : (g1: Func2, g2: Func2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >g1 : Func2 > : ^^^^^^^^ >g2 : Func2 @@ -58,8 +58,8 @@ declare function bar(g1: Func2, g2: Func2): void; bar(f1, f2); >bar(f1, f2) : void > : ^^^^ ->bar : (g1: Func2, g2: Func2) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bar : (g1: Func2, g2: Func2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f1 : Func1 > : ^^^^^^^^^^^^^ >f2 : Func1<"a"> @@ -68,8 +68,8 @@ bar(f1, f2); bar(g1, g2); >bar(g1, g2) : void > : ^^^^ ->bar : (g1: Func2, g2: Func2) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bar : (g1: Func2, g2: Func2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >g1 : Func2 > : ^^^^^^^^^^^^^ >g2 : Func2<"a"> diff --git a/tests/baselines/reference/controlFlowAliasing.types b/tests/baselines/reference/controlFlowAliasing.types index d24919344d519..f4a003f191701 100644 --- a/tests/baselines/reference/controlFlowAliasing.types +++ b/tests/baselines/reference/controlFlowAliasing.types @@ -1461,8 +1461,8 @@ class Utils { > : ^^^^^ static isDefined(value: T): value is NonNullable { ->isDefined : (value: T) => value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isDefined : (value: T) => value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -1491,12 +1491,12 @@ class A53267 { > : ^^^^^^^ >Utils.isDefined(this.testNumber) : boolean > : ^^^^^^^ ->Utils.isDefined : (value: T) => value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>Utils.isDefined : (value: T) => value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Utils : typeof Utils > : ^^^^^^^^^^^^ ->isDefined : (value: T) => value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isDefined : (value: T) => value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >this.testNumber : number | undefined > : ^^^^^^^^^^^^^^^^^^ >this : this diff --git a/tests/baselines/reference/controlFlowDestructuringParameters.types b/tests/baselines/reference/controlFlowDestructuringParameters.types index 2508969d36c23..ced7cad9c7d36 100644 --- a/tests/baselines/reference/controlFlowDestructuringParameters.types +++ b/tests/baselines/reference/controlFlowDestructuringParameters.types @@ -7,8 +7,8 @@ [{ x: 1 }].map( >[{ x: 1 }].map( ({ x }) => x) : number[] > : ^^^^^^^^ ->[{ x: 1 }].map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[{ x: 1 }].map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[{ x: 1 }] : { x: number; }[] > : ^^^^^^^^^^^^^^^^ >{ x: 1 } : { x: number; } @@ -17,8 +17,8 @@ > : ^^^^^^ >1 : 1 > : ^ ->map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: { x: number; }, index: number, array: { x: number; }[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ({ x }) => x >({ x }) => x : ({ x }: { x: number; }) => number diff --git a/tests/baselines/reference/controlFlowGenericTypes.types b/tests/baselines/reference/controlFlowGenericTypes.types index 34aaf80709138..a699b6abe6126 100644 --- a/tests/baselines/reference/controlFlowGenericTypes.types +++ b/tests/baselines/reference/controlFlowGenericTypes.types @@ -95,8 +95,8 @@ function f1(x: T, y: { a: T }, z: [T]): string { } function f2(x: Extract | null): string { ->f2 : (x: Extract | null) => string -> : ^ ^^ ^^ ^^^^^ +>f2 : (x: Extract | null) => string +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Extract | null > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -144,8 +144,8 @@ declare function isUndefined(x: unknown): x is undefined; > : ^^^^^^^ declare function unbox(x: Box): T; ->unbox : (x: Box) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (x: Box) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^ @@ -166,8 +166,8 @@ function g1 | undefined>(x: T) { unbox(x); >unbox(x) : T > : ^ ->unbox : (x: Box) => T_1 -> : ^^^^^^ ^^ ^^^^^ +>unbox : (x: Box) => T_1 +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^ } @@ -192,8 +192,8 @@ function g2 | undefined>(x: T) { unbox(x); >unbox(x) : T > : ^ ->unbox : (x: Box) => T_1 -> : ^^^^^^ ^^ ^^^^^ +>unbox : (x: Box) => T_1 +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^ } @@ -218,8 +218,8 @@ function g3 | undefined>(x: T) { unbox(x); // Error >unbox(x) : T > : ^ ->unbox : (x: Box) => T_1 -> : ^^^^^^ ^^ ^^^^^ +>unbox : (x: Box) => T_1 +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : undefined > : ^^^^^^^^^ } @@ -242,8 +242,8 @@ function g4 | undefined>(x: T) { unbox(x); // Error >unbox(x) : unknown > : ^^^^^^^ ->unbox : (x: Box) => T_1 -> : ^^^^^^ ^^ ^^^^^ +>unbox : (x: Box) => T_1 +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : undefined > : ^^^^^^^^^ } @@ -543,8 +543,8 @@ class EventEmitter { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function once>(emittingObject: T, eventName: keyof ET): void { ->once : >(emittingObject: T, eventName: keyof ET) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>once : >(emittingObject: T, eventName: keyof ET) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >emittingObject : T > : ^ >eventName : keyof ET @@ -588,8 +588,8 @@ function once>(emittingObject: T, eventName: keyo // and x are of generic types T and K, we want the resulting type to be T[K]. function fx1(obj: T, key: K) { ->fx1 : (obj: T, key: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>fx1 : (obj: T, key: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -884,8 +884,8 @@ type Column = (keyof T extends never ? { id?: number | string } : { id: T }) > : ^^^^^^^^^^^^^^^^^^ function getColumnProperty(column: Column, key: keyof Column) { ->getColumnProperty : (column: Column, key: keyof Column) => Column["title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; })] -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>getColumnProperty : (column: Column, key: keyof Column) => Column["title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; })] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >column : Column > : ^^^^^^^^^ >key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) diff --git a/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types b/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types index d980a88e871a9..e3fb619bd60e2 100644 --- a/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types +++ b/tests/baselines/reference/controlFlowInstanceofWithSymbolHasInstance.types @@ -204,8 +204,8 @@ class A { > : ^^^^^^ static [Symbol.hasInstance](this: T, value: unknown): value is ( ->[Symbol.hasInstance] : (this: T, value: unknown) => value is (T extends (abstract new (...args: any) => infer U) ? U : never) -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>[Symbol.hasInstance] : (this: T, value: unknown) => value is (T extends (abstract new (...args: any) => infer U) ? U : never) +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >Symbol.hasInstance : unique symbol > : ^^^^^^^^^^^^^ >Symbol : SymbolConstructor diff --git a/tests/baselines/reference/controlFlowLoopAnalysis.types b/tests/baselines/reference/controlFlowLoopAnalysis.types index 30caab5676ccf..dc9c20ab97acf 100644 --- a/tests/baselines/reference/controlFlowLoopAnalysis.types +++ b/tests/baselines/reference/controlFlowLoopAnalysis.types @@ -102,8 +102,8 @@ function test2() { // Repro from #8511 function mapUntilCant( ->mapUntilCant : (values: a[], canTake: (value: a, index: number) => boolean, mapping: (value: a, index: number) => b) => b[] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>mapUntilCant : (values: a[], canTake: (value: a, index: number) => boolean, mapping: (value: a, index: number) => b) => b[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ values: a[], >values : a[] diff --git a/tests/baselines/reference/controlFlowOptionalChain.types b/tests/baselines/reference/controlFlowOptionalChain.types index 1be51c8e96277..b102078f9bd0c 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.types +++ b/tests/baselines/reference/controlFlowOptionalChain.types @@ -909,8 +909,8 @@ o6.f; // asserts declare const isDefined: (value: T) => asserts value is NonNullable; ->isDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -987,8 +987,8 @@ function f01(x: unknown) { isDefined(maybeIsString); >isDefined(maybeIsString) : void > : ^^^^ ->isDefined : (value: T) => asserts value is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isDefined : (value: T) => asserts value is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >maybeIsString : ((value: unknown) => asserts value is string) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ @@ -2731,8 +2731,8 @@ declare function assert(x: unknown): asserts x; > : ^^^^^^^ declare function assertNonNull(x: T): asserts x is NonNullable; ->assertNonNull : (x: T) => asserts x is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertNonNull : (x: T) => asserts x is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -2847,8 +2847,8 @@ function f30(o: Thing | undefined) { assertNonNull(o?.foo); >assertNonNull(o?.foo) : void > : ^^^^ ->assertNonNull : (x: T) => asserts x is NonNullable -> : ^ ^^ ^^ ^^^^^ +>assertNonNull : (x: T) => asserts x is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >o?.foo : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o : Thing | undefined diff --git a/tests/baselines/reference/controlFlowOuterVariable.types b/tests/baselines/reference/controlFlowOuterVariable.types index c612b2d60477f..22e4181360fa5 100644 --- a/tests/baselines/reference/controlFlowOuterVariable.types +++ b/tests/baselines/reference/controlFlowOuterVariable.types @@ -38,18 +38,18 @@ const CONFIG = { }; const helper = function(t: T[]) { ->helper : (t: T[]) => void -> : ^ ^^ ^^ ^^^^^^^^^ ->function(t: T[]) { helper(t.slice(1));} : (t: T[]) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>helper : (t: T[]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>function(t: T[]) { helper(t.slice(1));} : (t: T[]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T[] > : ^^^ helper(t.slice(1)); >helper(t.slice(1)) : void > : ^^^^ ->helper : (t: T[]) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>helper : (t: T[]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t.slice(1) : T[] > : ^^^ >t.slice : (start?: number, end?: number) => T[] diff --git a/tests/baselines/reference/controlFlowTruthiness.types b/tests/baselines/reference/controlFlowTruthiness.types index e2f0b9615391f..4fda565e25523 100644 --- a/tests/baselines/reference/controlFlowTruthiness.types +++ b/tests/baselines/reference/controlFlowTruthiness.types @@ -245,8 +245,8 @@ function f7(x: {}) { } function f8(x: T) { ->f8 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f8 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types b/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types index 05a99feaa034b..ca6a01c1397cd 100644 --- a/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=false).types @@ -34,10 +34,10 @@ type Out = InexactOptionals > : ^^^ const foo = () => (x: Out & A) => null ->foo : () => (x: Out & A) => null -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ->() => (x: Out & A) => null : () => (x: Out & A) => null -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>foo : () => (x: Out & A) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>() => (x: Out & A) => null : () => (x: Out & A) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(x: Out & A) => null : (x: Out & A) => null > : ^ ^^ ^^^^^^^^^ >x : { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A @@ -48,6 +48,6 @@ export const baddts = foo() > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ >foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->foo : () => (x: Out & A) => null -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>foo : () => (x: Out & A) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types b/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types index 05a99feaa034b..ca6a01c1397cd 100644 --- a/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/declarationEmitExactOptionalPropertyTypesNodeNotReused(exactoptionalpropertytypes=true).types @@ -34,10 +34,10 @@ type Out = InexactOptionals > : ^^^ const foo = () => (x: Out & A) => null ->foo : () => (x: Out & A) => null -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ->() => (x: Out & A) => null : () => (x: Out & A) => null -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>foo : () => (x: Out & A) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>() => (x: Out & A) => null : () => (x: Out & A) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >(x: Out & A) => null : (x: Out & A) => null > : ^ ^^ ^^^^^^^^^ >x : { foo?: string | undefined; baz?: undefined; } & { bar: number; } & A @@ -48,6 +48,6 @@ export const baddts = foo() > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ >foo() : (x: { foo?: string | undefined; baz?: undefined; } & { bar: number; }) => null > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->foo : () => (x: Out & A) => null -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>foo : () => (x: Out & A) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ diff --git a/tests/baselines/reference/declarationEmitPreserveReferencedImports.js b/tests/baselines/reference/declarationEmitPreserveReferencedImports.js index c3d946c3af4aa..f87b10c38eab8 100644 --- a/tests/baselines/reference/declarationEmitPreserveReferencedImports.js +++ b/tests/baselines/reference/declarationEmitPreserveReferencedImports.js @@ -35,7 +35,7 @@ exports.f = { o: (0, decl_1.o)({ v: null }) }; export interface Evt { } //// [decl.d.ts] -export declare const o: (o: T) => () => T; +export declare const o: (o: T) => () => T; //// [main.d.ts] import { Evt } from './utils'; export declare const f: { diff --git a/tests/baselines/reference/declarationEmitPreserveReferencedImports.types b/tests/baselines/reference/declarationEmitPreserveReferencedImports.types index e3bbf57ae24f4..c66face5870da 100644 --- a/tests/baselines/reference/declarationEmitPreserveReferencedImports.types +++ b/tests/baselines/reference/declarationEmitPreserveReferencedImports.types @@ -11,10 +11,10 @@ import {Evt} from './utils' > : ^^^ export const o = (o: T) => () : T => null! ->o : (o: T) => () => T -> : ^ ^^ ^^ ^^^^^^^^^^^ ->(o: T) => () : T => null! : (o: T) => () => T -> : ^ ^^ ^^ ^^^^^^^^^^^ +>o : (o: T) => () => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>(o: T) => () : T => null! : (o: T) => () => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >o : T > : ^ >() : T => null! : () => T @@ -24,8 +24,8 @@ export const o = (o: T) => () : T => null! === main.ts === import { o } from './decl' ->o : (o: T) => () => T -> : ^ ^^ ^^ ^^^^^^^^^^^ +>o : (o: T) => () => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ import { Evt } from './utils' >Evt : any @@ -40,8 +40,8 @@ export const f = { o: o({ v: null! as Evt}) }; > : ^^^^^^^^^^^ ^^^ >o({ v: null! as Evt}) : () => { v: Evt; } > : ^^^^^^^^^^^ ^^^ ->o : (o: T) => () => T -> : ^ ^^ ^^ ^^^^^^^^^^^ +>o : (o: T) => () => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >{ v: null! as Evt} : { v: Evt; } > : ^^^^^ ^^^ >v : Evt diff --git a/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types b/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types index 84491c53a5cd4..f1b1ab2f9e68a 100644 --- a/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types +++ b/tests/baselines/reference/declarationEmitReexportedSymlinkReference.types @@ -13,12 +13,12 @@ export const ADMIN = MetadataAccessor.create('1'); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor.create('1') : MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->MetadataAccessor.create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>MetadataAccessor.create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >MetadataAccessor : typeof MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^ ->create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'1' : "1" > : ^^^ @@ -62,8 +62,8 @@ export declare class MetadataAccessor { > : ^^^^^^ static create(key: string): MetadataAccessor; ->create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types b/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types index 9255b91a4871a..b5144766c41ba 100644 --- a/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types +++ b/tests/baselines/reference/declarationEmitReexportedSymlinkReference2.types @@ -13,12 +13,12 @@ export const ADMIN = MetadataAccessor.create('1'); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor.create('1') : MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->MetadataAccessor.create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>MetadataAccessor.create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >MetadataAccessor : typeof MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^ ->create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'1' : "1" > : ^^^ @@ -62,8 +62,8 @@ export declare class MetadataAccessor { > : ^^^^^^ static create(key: string): MetadataAccessor; ->create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types b/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types index 4c53f672d436f..89fadb744386c 100644 --- a/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types +++ b/tests/baselines/reference/declarationEmitReexportedSymlinkReference3.types @@ -13,12 +13,12 @@ export const ADMIN = MetadataAccessor.create('1'); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MetadataAccessor.create('1') : MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->MetadataAccessor.create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>MetadataAccessor.create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >MetadataAccessor : typeof MetadataAccessor > : ^^^^^^^^^^^^^^^^^^^^^^^ ->create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'1' : "1" > : ^^^ @@ -62,8 +62,8 @@ export declare class MetadataAccessor { > : ^^^^^^ static create(key: string): MetadataAccessor; ->create : (key: string) => MetadataAccessor -> : ^ ^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ +>create : (key: string) => MetadataAccessor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ >key : string > : ^^^^^^ } diff --git a/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.js b/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.js index 3bbe347a63e50..82ab5ee442b1c 100644 --- a/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.js +++ b/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.js @@ -20,4 +20,4 @@ exports.run = run; //// [index.d.ts] import * as E from 'whatever'; -export declare const run: (i: () => E.Whatever) => E.Whatever; +export declare const run: (i: () => E.Whatever) => E.Whatever; diff --git a/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types b/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types index 6cadfea0e0fe6..e4cd8615b2c94 100644 --- a/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types +++ b/tests/baselines/reference/declarationEmitRetainedAnnotationRetainsImportInOutput.types @@ -8,8 +8,8 @@ export type Whatever = {x: T}; > : ^ export declare function something(cb: () => Whatever): Whatever; ->something : (cb: () => Whatever) => Whatever -> : ^ ^^ ^^ ^^^^^ +>something : (cb: () => Whatever) => Whatever +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : () => Whatever > : ^^^^^^ @@ -19,10 +19,10 @@ import * as E from 'whatever'; > : ^^^^^^^^ export const run = (i: () => E.Whatever): E.Whatever => E.something(i); ->run : (i: () => E.Whatever) => E.Whatever -> : ^ ^^ ^^ ^^^^^ ->(i: () => E.Whatever): E.Whatever => E.something(i) : (i: () => E.Whatever) => E.Whatever -> : ^ ^^ ^^ ^^^^^ +>run : (i: () => E.Whatever) => E.Whatever +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(i: () => E.Whatever): E.Whatever => E.something(i) : (i: () => E.Whatever) => E.Whatever +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >i : () => E.Whatever > : ^^^^^^ >E : any @@ -31,12 +31,12 @@ export const run = (i: () => E.Whatever): E.Whatever => E.something(i); > : ^^^ >E.something(i) : E.Whatever > : ^^^^^^^^^^^^^ ->E.something : (cb: () => E.Whatever) => E.Whatever -> : ^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>E.something : (cb: () => E.Whatever) => E.Whatever +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ >E : typeof E > : ^^^^^^^^ ->something : (cb: () => E.Whatever) => E.Whatever -> : ^ ^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>something : (cb: () => E.Whatever) => E.Whatever +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ >i : () => E.Whatever > : ^^^^^^ diff --git a/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js b/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js index bdc001a6ab0a6..4158b9dfc52a5 100644 --- a/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js +++ b/tests/baselines/reference/declarationEmitReusesLambdaParameterNodes.js @@ -23,5 +23,5 @@ function CustomSelect2(x) { } //// [index.d.ts] import { Props } from "react-select"; -export declare const CustomSelect1:

(p: P) => (from: I) => I & P +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >{ foo: 1 } : { foo: number; } > : ^^^^^^^^^^^^^^^^ >foo : number @@ -65,8 +65,8 @@ const added2 = addP2({ bar: 2 }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >addP2({ bar: 2 }) : { bar: number; } & { foo: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->addP2 : (from: I) => I & { foo: number; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>addP2 : (from: I) => I & { foo: number; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ bar: 2 } : { bar: number; } > : ^^^^^^^^^^^^^^^^ >bar : number diff --git a/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types b/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types index e75c79c9afd85..0ebb0f4e25d87 100644 --- a/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types +++ b/tests/baselines/reference/genericCallOnMemberReturningClosedOverObject.types @@ -4,60 +4,60 @@ // https://github.com/microsoft/TypeScript/issues/11584 function example() { ->example : () => { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>example : () => { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ let x = { ->x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ->{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>{ foo: (t2: T2) => x, bar: (t1: T1) => x, } : { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ foo: (t2: T2) => x, ->foo : (t2: T2) => { foo: any; bar: (t1: T1) => any; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ->(t2: T2) => x : (t2: T2) => { foo: any; bar: (t1: T1) => any; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>foo : (t2: T2) => { foo: any; bar: (t1: T1) => any; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>(t2: T2) => x : (t2: T2) => { foo: any; bar: (t1: T1) => any; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >t2 : T2 > : ^^ ->x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ bar: (t1: T1) => x, ->bar : (t1: T1) => { foo: (t2: T2) => any; bar: any; } -> : ^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ->(t1: T1) => x : (t1: T1) => { foo: (t2: T2) => any; bar: any; } -> : ^ ^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ +>bar : (t1: T1) => { foo: (t2: T2) => any; bar: any; } +> : ^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ +>(t1: T1) => x : (t1: T1) => { foo: (t2: T2) => any; bar: any; } +> : ^ ^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >t1 : T1 > : ^^ ->x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ }; return x; ->x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>x : { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ } example().foo("hello").bar(1); ->example().foo("hello").bar(1) : { foo: (t2: T2) => any; bar: (t1: number) => any; } -> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->example().foo("hello").bar : (t1: number) => { foo: (t2: T2) => any; bar: any; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->example().foo("hello") : { foo: (t2: T2) => any; bar: (t1: number) => any; } -> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->example().foo : (t2: T2) => { foo: any; bar: (t1: number) => any; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->example() : { foo: (t2: T2) => any; bar: (t1: number) => any; } -> : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->example : () => { foo: (t2: T2) => any; bar: (t1: T1) => any; } -> : ^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ ->foo : (t2: T2) => { foo: any; bar: (t1: number) => any; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>example().foo("hello").bar(1) : { foo: (t2: T2) => any; bar: (t1: number) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>example().foo("hello").bar : (t1: number) => { foo: (t2: T2) => any; bar: any; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>example().foo("hello") : { foo: (t2: T2) => any; bar: (t1: number) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>example().foo : (t2: T2) => { foo: any; bar: (t1: number) => any; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>example() : { foo: (t2: T2) => any; bar: (t1: number) => any; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>example : () => { foo: (t2: T2) => any; bar: (t1: T1) => any; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ +>foo : (t2: T2) => { foo: any; bar: (t1: number) => any; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" > : ^^^^^^^ ->bar : (t1: number) => { foo: (t2: T2) => any; bar: any; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>bar : (t1: number) => { foo: (t2: T2) => any; bar: any; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types b/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types index da5e47d588991..9a7bfb831db93 100644 --- a/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types +++ b/tests/baselines/reference/genericCallWithinOwnBodyCastTypeParameterIdentity.types @@ -3,8 +3,8 @@ === genericCallWithinOwnBodyCastTypeParameterIdentity.ts === interface Thenable { then( ->then : (onFulfilled: (value: Value) => V | Thenable) => Thenable -> : ^ ^^ ^^ ^^^^^ +>then : (onFulfilled: (value: Value) => V | Thenable) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ onFulfilled: (value: Value) => V | Thenable, >onFulfilled : (value: Value) => V | Thenable @@ -16,10 +16,10 @@ interface Thenable { } const toThenable = (fn: (input: Input) => Result | Thenable) => ->toThenable : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ ->(fn: (input: Input) => Result | Thenable) => (input: Input): Thenable => { const result = fn(input) return { then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } }; } : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ +>toThenable : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^ +>(fn: (input: Input) => Result | Thenable) => (input: Input): Thenable => { const result = fn(input) return { then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } }; } : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^ >fn : (input: Input) => Result | Thenable > : ^ ^^ ^^^^^ >input : Input @@ -42,12 +42,12 @@ const toThenable = (fn: (input: Input) => Result | Thenable : ^^^^^ return { ->{ then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } } : { then(onFulfilled: (value: Result) => V | Thenable): Thenable; } -> : ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ +>{ then(onFulfilled: (value: Result) => V | Thenable) { return toThenable(onFulfilled)(result as Result) } } : { then(onFulfilled: (value: Result) => V | Thenable): Thenable; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ then(onFulfilled: (value: Result) => V | Thenable) { ->then : (onFulfilled: (value: Result) => V | Thenable) => Thenable -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ +>then : (onFulfilled: (value: Result) => V | Thenable) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >onFulfilled : (value: Result) => V | Thenable > : ^ ^^ ^^^^^ >value : Result @@ -58,8 +58,8 @@ const toThenable = (fn: (input: Input) => Result | Thenable : ^^^^^^^^^^^ >toThenable(onFulfilled) : (input: Result) => Thenable > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->toThenable : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ +>toThenable : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^ >onFulfilled : (value: Result) => V | Thenable > : ^ ^^ ^^^^^ >result as Result : Result @@ -71,10 +71,10 @@ const toThenable = (fn: (input: Input) => Result | Thenable(fn: (input: Input) => Result | Thenable) => ->toThenableInferred : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ ->(fn: (input: Input) => Result | Thenable) => (input: Input): Thenable => { const result = fn(input) return { then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } }; } : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ +>toThenableInferred : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^ +>(fn: (input: Input) => Result | Thenable) => (input: Input): Thenable => { const result = fn(input) return { then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } }; } : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^ >fn : (input: Input) => Result | Thenable > : ^ ^^ ^^^^^ >input : Input @@ -97,12 +97,12 @@ const toThenableInferred = (fn: (input: Input) => Result | Thenab > : ^^^^^ return { ->{ then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } } : { then(onFulfilled: (value: Result) => V | Thenable): Thenable; } -> : ^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ then(onFulfilled) { return toThenableInferred(onFulfilled)(result as Result) } } : { then(onFulfilled: (value: Result) => V | Thenable): Thenable; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ then(onFulfilled) { ->then : (onFulfilled: (value: Result) => V | Thenable) => Thenable -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onFulfilled: (value: Result) => V | Thenable) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onFulfilled : (value: Result) => V | Thenable > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -111,8 +111,8 @@ const toThenableInferred = (fn: (input: Input) => Result | Thenab > : ^^^^^^^^^^^ >toThenableInferred(onFulfilled) : (input: Result) => Thenable > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->toThenableInferred : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^ +>toThenableInferred : (fn: (input: Input) => Result | Thenable) => (input: Input) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^ >onFulfilled : (value: Result) => V | Thenable > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result as Result : Result diff --git a/tests/baselines/reference/genericContextualTypes1.js b/tests/baselines/reference/genericContextualTypes1.js index 9ffcc127977c9..47f32e362fb98 100644 --- a/tests/baselines/reference/genericContextualTypes1.js +++ b/tests/baselines/reference/genericContextualTypes1.js @@ -96,8 +96,8 @@ declare const f10: (x: T) => Box; declare const f11: (x: T) => Box; declare const f12: (x: Box) => T; declare const f13: (x: Box) => T; -declare const arrayMap: (f: (x: T) => U) => (a: T[]) => U[]; -declare const arrayFilter: (f: (x: T) => boolean) => (a: T[]) => T[]; +declare const arrayMap: (f: (x: T) => U) => (a: T[]) => U[]; +declare const arrayFilter: (f: (x: T) => boolean) => (a: T[]) => T[]; declare const f20: (a: string[]) => number[]; declare const f21: (a: A[]) => A[][]; declare const f22: (a: A[]) => A[]; diff --git a/tests/baselines/reference/genericContextualTypes1.types b/tests/baselines/reference/genericContextualTypes1.types index 8501eb750fa2d..82a6f10191103 100644 --- a/tests/baselines/reference/genericContextualTypes1.types +++ b/tests/baselines/reference/genericContextualTypes1.types @@ -8,8 +8,8 @@ type Box = { value: T }; > : ^ declare function wrap(f: (a: A) => B): (a: A) => B; ->wrap : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^ ^^ ^^^^^ +>wrap : (f: (a: A) => B) => (a: A) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -18,8 +18,8 @@ declare function wrap(f: (a: A) => B): (a: A) => B; > : ^ declare function compose(f: (a: A) => B, g: (b: B) => C): (a: A) => C; ->compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -32,32 +32,32 @@ declare function compose(f: (a: A) => B, g: (b: B) => C): (a: A) => C; > : ^ declare function list(a: T): T[]; ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T > : ^ declare function unlist(a: T[]): T; ->unlist : (a: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>unlist : (a: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T[] > : ^^^ declare function box(x: V): Box; ->box : (x: V) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : V > : ^ declare function unbox(x: Box): W; ->unbox : (x: Box) => W -> : ^ ^^ ^^ ^^^^^ +>unbox : (x: Box) => W +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^ declare function map(a: T[], f: (x: T) => U): U[]; ->map : (a: T[], f: (x: T) => U) => U[] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>map : (a: T[], f: (x: T) => U) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : T[] > : ^^^ >f : (x: T) => U @@ -66,22 +66,22 @@ declare function map(a: T[], f: (x: T) => U): U[]; > : ^ declare function identity(x: T): T; ->identity : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>identity : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function zip(a: A, b: B): [A, B]; ->zip : (a: A, b: B) => [A, B] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>zip : (a: A, b: B) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B > : ^ declare function flip(f: (x: X, y: Y) => Z): (y: Y, x: X) => Z; ->flip : (f: (x: X, y: Y) => Z) => (y: Y, x: X) => Z -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>flip : (f: (x: X, y: Y) => Z) => (y: Y, x: X) => Z +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (x: X, y: Y) => Z > : ^ ^^ ^^ ^^ ^^^^^ >x : X @@ -94,20 +94,20 @@ declare function flip(f: (x: X, y: Y) => Z): (y: Y, x: X) => Z; > : ^ const f00: (x: A) => A[] = list; ->f00 : (x: A) => A[] -> : ^ ^^ ^^ ^^^^^ +>f00 : (x: A) => A[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A > : ^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f01: (x: A) => A[] = x => [x]; ->f01 : (x: A) => A[] -> : ^ ^^ ^^ ^^^^^ +>f01 : (x: A) => A[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A > : ^ ->x => [x] : (x: A) => A[] -> : ^ ^^ ^^^^^^^^^^^ +>x => [x] : (x: A) => A[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ >x : A > : ^ >[x] : A[] @@ -116,26 +116,26 @@ const f01: (x: A) => A[] = x => [x]; > : ^ const f02: (x: A) => A[] = wrap(list); ->f02 : (x: A) => A[] -> : ^ ^^ ^^ ^^^^^ +>f02 : (x: A) => A[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A > : ^ >wrap(list) : (a: A) => A[] > : ^ ^^^^^^^^^^^ ->wrap : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>wrap : (f: (a: A) => B) => (a: A) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f03: (x: A) => A[] = wrap(x => [x]); ->f03 : (x: A) => A[] -> : ^ ^^ ^^ ^^^^^ +>f03 : (x: A) => A[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A > : ^ >wrap(x => [x]) : (a: A) => A[] > : ^ ^^^^^^^^^^^ ->wrap : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^ ^^ ^^^^^ +>wrap : (f: (a: A) => B) => (a: A) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => [x] : (x: A) => A[] > : ^ ^^^^^^^^^^^ >x : A @@ -146,22 +146,22 @@ const f03: (x: A) => A[] = wrap(x => [x]); > : ^ const f10: (x: T) => Box = compose(a => list(a), b => box(b)); ->f10 : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>f10 : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >compose(a => list(a), b => box(b)) : (a: T) => Box > : ^ ^^^^^^^^^^^^^^^^ ->compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a => list(a) : (a: T) => T[] > : ^ ^^^^^^^^^^^ >a : T > : ^ >list(a) : T[] > : ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T > : ^ >b => box(b) : (b: T[]) => Box @@ -170,42 +170,42 @@ const f10: (x: T) => Box = compose(a => list(a), b => box(b)); > : ^^^ >box(b) : Box > : ^^^^^^^^ ->box : (x: V) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b : T[] > : ^^^ const f11: (x: T) => Box = compose(list, box); ->f11 : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>f11 : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >compose(list, box) : (a: T) => Box > : ^ ^^^^^^^^^^^^^^^^ ->compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => Box -> : ^ ^^ ^^ ^^^^^ +>compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f12: (x: Box) => T = compose(a => unbox(a), b => unlist(b)); ->f12 : (x: Box) => T -> : ^ ^^ ^^ ^^^^^ +>f12 : (x: Box) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^^^ >compose(a => unbox(a), b => unlist(b)) : (a: Box) => T > : ^ ^^^^^^^^^^^^^^^^ ->compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a => unbox(a) : (a: Box) => T[] > : ^ ^^^^^^^^^^^^^^^^^^ >a : Box > : ^^^^^^^^ >unbox(a) : T[] > : ^^^ ->unbox : (x: Box) => W -> : ^ ^^ ^^ ^^^^^ +>unbox : (x: Box) => W +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : Box > : ^^^^^^^^ >b => unlist(b) : (b: T[]) => T @@ -214,30 +214,30 @@ const f12: (x: Box) => T = compose(a => unbox(a), b => unlist(b)); > : ^^^ >unlist(b) : T > : ^ ->unlist : (a: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>unlist : (a: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b : T[] > : ^^^ const f13: (x: Box) => T = compose(unbox, unlist); ->f13 : (x: Box) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Box) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^^^ >compose(unbox, unlist) : (a: Box) => T > : ^ ^^^^^^^^^^^^^^^^ ->compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->unbox : (x: Box) => W -> : ^ ^^ ^^ ^^^^^ ->unlist : (a: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>compose : (f: (a: A) => B, g: (b: B) => C) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>unbox : (x: Box) => W +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>unlist : (a: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const arrayMap = (f: (x: T) => U) => (a: T[]) => a.map(f); ->arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ ->(f: (x: T) => U) => (a: T[]) => a.map(f) : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayMap : (f: (x: T) => U) => (a: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>(f: (x: T) => U) => (a: T[]) => a.map(f) : (f: (x: T) => U) => (a: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >f : (x: T) => U > : ^ ^^ ^^^^^ >x : T @@ -248,20 +248,20 @@ const arrayMap = (f: (x: T) => U) => (a: T[]) => a.map(f); > : ^^^ >a.map(f) : U[] > : ^^^ ->a.map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ +>a.map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >a : T[] > : ^^^ ->map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ +>map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >f : (x: T) => U > : ^ ^^ ^^^^^ const arrayFilter = (f: (x: T) => boolean) => (a: T[]) => a.filter(f); ->arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ ->(f: (x: T) => boolean) => (a: T[]) => a.filter(f) : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>(f: (x: T) => boolean) => (a: T[]) => a.filter(f) : (f: (x: T) => boolean) => (a: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >f : (x: T) => boolean > : ^ ^^ ^^^^^ >x : T @@ -288,8 +288,8 @@ const f20: (a: string[]) => number[] = arrayMap(x => x.length); > : ^^^^^^^^ >arrayMap(x => x.length) : (a: string[]) => number[] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ->arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayMap : (f: (x: T) => U) => (a: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => x.length : (x: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : string @@ -302,14 +302,14 @@ const f20: (a: string[]) => number[] = arrayMap(x => x.length); > : ^^^^^^ const f21: (a: A[]) => A[][] = arrayMap(x => [x]); ->f21 : (a: A[]) => A[][] -> : ^ ^^ ^^ ^^^^^ +>f21 : (a: A[]) => A[][] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : A[] > : ^^^ >arrayMap(x => [x]) : (a: A[]) => A[][] > : ^ ^^^^^^^^^^^^^^^ ->arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayMap : (f: (x: T) => U) => (a: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => [x] : (x: A) => A[] > : ^ ^^^^^^^^^^^ >x : A @@ -320,26 +320,26 @@ const f21: (a: A[]) => A[][] = arrayMap(x => [x]); > : ^ const f22: (a: A[]) => A[] = arrayMap(identity); ->f22 : (a: A[]) => A[] -> : ^ ^^ ^^ ^^^^^ +>f22 : (a: A[]) => A[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : A[] > : ^^^ >arrayMap(identity) : (a: A[]) => A[] > : ^ ^^^^^^^^^^^^^ ->arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ ->identity : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>arrayMap : (f: (x: T) => U) => (a: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>identity : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f23: (a: A[]) => Box[] = arrayMap(value => ({ value })); ->f23 : (a: A[]) => Box[] -> : ^ ^^ ^^ ^^^^^ +>f23 : (a: A[]) => Box[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : A[] > : ^^^ >arrayMap(value => ({ value })) : (a: A[]) => { value: A; }[] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->arrayMap : (f: (x: T) => U) => (a: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayMap : (f: (x: T) => U) => (a: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >value => ({ value }) : (value: A) => { value: A; } > : ^ ^^^^^^^^^^^^^^^^^^^^^ >value : A @@ -358,8 +358,8 @@ const f30: (a: string[]) => string[] = arrayFilter(x => x.length > 10); > : ^^^^^^^^ >arrayFilter(x => x.length > 10) : (a: string[]) => string[] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ->arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => x.length > 10 : (x: string) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^ >x : string @@ -382,8 +382,8 @@ const f31: >(a: T[]) => T[] = arrayFilter(x => x.value > 1 > : ^^^ >arrayFilter(x => x.value > 10) : (a: T[]) => T[] > : ^ ^^^^^^^^^^^^^ ->arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] -> : ^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>arrayFilter : (f: (x: T) => boolean) => (a: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >x => x.value > 10 : (x: T) => boolean > : ^ ^^^^^^^^^^^^^^^ >x : T @@ -400,18 +400,18 @@ const f31: >(a: T[]) => T[] = arrayFilter(x => x.value > 1 > : ^^ const f40: (b: B, a: A) => [A, B] = flip(zip); ->f40 : (b: B, a: A) => [A, B] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f40 : (b: B, a: A) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >a : A > : ^ >flip(zip) : (y: B, x: A) => [A, B] > : ^ ^^^^^ ^^^^^^^^^^^^^^ ->flip : (f: (x: X, y: Y) => Z) => (y: Y, x: X) => Z -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->zip : (a: A, b: B) => [A, B] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>flip : (f: (x: X, y: Y) => Z) => (y: Y, x: X) => Z +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>zip : (a: A, b: B) => [A, B] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ // Repro from #16293 @@ -424,8 +424,8 @@ type fn = (a: A) => A; const fn: fn = a => a; >fn : fn > : ^^ ->a => a : (a: A) => A -> : ^ ^^ ^^^^^^^^^ +>a => a : (a: A) => A +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >a : A > : ^ >a : A diff --git a/tests/baselines/reference/genericContextualTypes2.types b/tests/baselines/reference/genericContextualTypes2.types index 5a0a15b751ddf..c39462ae06217 100644 --- a/tests/baselines/reference/genericContextualTypes2.types +++ b/tests/baselines/reference/genericContextualTypes2.types @@ -48,8 +48,8 @@ interface AssignAction { } declare function assign( ->assign : (assignment: PropertyAssigner>) => AssignAction -> : ^ ^^ ^^ ^^^^^ +>assign : (assignment: PropertyAssigner>) => AssignAction +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ assignment: PropertyAssigner> >assignment : PropertyAssigner> @@ -72,16 +72,16 @@ type Config = { }; declare function createMachine(config: Config): void; ->createMachine : (config: Config) => void -> : ^ ^^ ^^ ^^^^^ +>createMachine : (config: Config) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >config : Config > : ^^^^^^^^^^^^^^^^ createMachine<{ count: number }>({ >createMachine<{ count: number }>({ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),}) : void > : ^^^^ ->createMachine : (config: Config) => void -> : ^ ^^ ^^ ^^^^^ +>createMachine : (config: Config) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >count : number > : ^^^^^^ >{ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),} : { context: { count: number; }; entry: AssignAction<{ count: number; }>; } @@ -105,8 +105,8 @@ createMachine<{ count: number }>({ > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >assign({ count: (ctx: { count: number }) => ++ctx.count, }) : AssignAction<{ count: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->assign : (assignment: PropertyAssigner>) => AssignAction -> : ^ ^^ ^^ ^^^^^ +>assign : (assignment: PropertyAssigner>) => AssignAction +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ count: (ctx: { count: number }) => ++ctx.count, } : { count: (ctx: { count: number; }) => number; } > : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericContextualTypes3.types b/tests/baselines/reference/genericContextualTypes3.types index 4b7a6177b5b1d..f1e51afd1b953 100644 --- a/tests/baselines/reference/genericContextualTypes3.types +++ b/tests/baselines/reference/genericContextualTypes3.types @@ -46,8 +46,8 @@ interface AssignAction { } declare function assign( ->assign : (assignment: PropertyAssigner>) => AssignAction -> : ^ ^^ ^^ ^^^^^ +>assign : (assignment: PropertyAssigner>) => AssignAction +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ assignment: PropertyAssigner> >assignment : PropertyAssigner> @@ -70,16 +70,16 @@ type Config = { }; declare function createMachine(config: Config): void; ->createMachine : (config: Config) => void -> : ^ ^^ ^^ ^^^^^ +>createMachine : (config: Config) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >config : Config > : ^^^^^^^^^^^^^^^^ createMachine<{ count: number }>({ >createMachine<{ count: number }>({ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),}) : void > : ^^^^ ->createMachine : (config: Config) => void -> : ^ ^^ ^^ ^^^^^ +>createMachine : (config: Config) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >count : number > : ^^^^^^ >{ context: { count: 0, }, entry: assign({ count: (ctx: { count: number }) => ++ctx.count, }),} : { context: { count: number; }; entry: AssignAction<{ count: number; }>; } @@ -103,8 +103,8 @@ createMachine<{ count: number }>({ > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >assign({ count: (ctx: { count: number }) => ++ctx.count, }) : AssignAction<{ count: number; }> > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->assign : (assignment: PropertyAssigner>) => AssignAction -> : ^ ^^ ^^ ^^^^^ +>assign : (assignment: PropertyAssigner>) => AssignAction +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ count: (ctx: { count: number }) => ++ctx.count, } : { count: (ctx: { count: number; }) => number; } > : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/genericFunctionInference1.errors.txt b/tests/baselines/reference/genericFunctionInference1.errors.txt index b729ce0699f25..41b1ed79fe7b1 100644 --- a/tests/baselines/reference/genericFunctionInference1.errors.txt +++ b/tests/baselines/reference/genericFunctionInference1.errors.txt @@ -1,4 +1,4 @@ -genericFunctionInference1.ts(135,14): error TS2345: Argument of type '(value: { key: a; }) => a' is not assignable to parameter of type '(value: Data) => string'. +genericFunctionInference1.ts(135,14): error TS2345: Argument of type '(value: { key: a; }) => a' is not assignable to parameter of type '(value: Data) => string'. Type 'number' is not assignable to type 'string'. @@ -139,7 +139,7 @@ genericFunctionInference1.ts(135,14): error TS2345: Argument of type '(value: toKeys(data, keyOf); // Error ~~~~~ -!!! error TS2345: Argument of type '(value: { key: a; }) => a' is not assignable to parameter of type '(value: Data) => string'. +!!! error TS2345: Argument of type '(value: { key: a; }) => a' is not assignable to parameter of type '(value: Data) => string'. !!! error TS2345: Type 'number' is not assignable to type 'string'. // #9366 diff --git a/tests/baselines/reference/genericFunctionInference1.types b/tests/baselines/reference/genericFunctionInference1.types index e973ef58a7da3..31e76a1f62afb 100644 --- a/tests/baselines/reference/genericFunctionInference1.types +++ b/tests/baselines/reference/genericFunctionInference1.types @@ -6,8 +6,8 @@ Instantiation count: 2,500 === genericFunctionInference1.ts === declare function pipe(ab: (...args: A) => B): (...args: A) => B; ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C, cd: (c: C) => D): (...args: A_1) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C): (...args: A_1) => C; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C, cd: (c: C) => D): (...args: A_1) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >ab : (...args: A) => B > : ^^^^ ^^ ^^^^^ >args : A @@ -16,8 +16,8 @@ declare function pipe(ab: (...args: A) => B): (...args: A) = > : ^ declare function pipe(ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; ->pipe : { (ab: (...args: A_1) => B_1): (...args: A_1) => B_1; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C_1, cd: (c: C_1) => D): (...args: A_1) => D; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A_1) => B_1): (...args: A_1) => B_1; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C_1, cd: (c: C_1) => D): (...args: A_1) => D; } +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >ab : (...args: A) => B > : ^^^^ ^^ ^^^^^ >args : A @@ -30,8 +30,8 @@ declare function pipe(ab: (...args: A) => B, bc: (b: B) = > : ^ declare function pipe(ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; ->pipe : { (ab: (...args: A_1) => B_1): (...args: A_1) => B_1; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C_1): (...args: A_1) => C_1; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A_1) => B_1): (...args: A_1) => B_1; (ab: (...args: A_1) => B_1, bc: (b: B_1) => C_1): (...args: A_1) => C_1; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >ab : (...args: A) => B > : ^^^^ ^^ ^^^^^ >args : A @@ -48,14 +48,14 @@ declare function pipe(ab: (...args: A) => B, bc: (b: B > : ^ declare function list(a: T): T[]; ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T > : ^ declare function box(x: V): { value: V }; ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : V > : ^ >value : V @@ -70,76 +70,76 @@ declare function foo(x: T): T; > : ^ const f00 = pipe(list); ->f00 : (a: T) => T[] -> : ^ ^^^^^^^^^^^^^^ ->pipe(list) : (a: T) => T[] -> : ^ ^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f00 : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe(list) : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f01 = pipe(list, box); ->f01 : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe(list, box) : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>f01 : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe(list, box) : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f02 = pipe(box, list); ->f02 : (x: V) => { value: V; }[] -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ->pipe(box, list) : (x: V) => { value: V; }[] -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f02 : (x: V) => { value: V; }[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +>pipe(box, list) : (x: V) => { value: V; }[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f03 = pipe(x => list(x), box); >f03 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), box) : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: any) => any[] > : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : any > : ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f04 = pipe(list, x => box(x)); ->f04 : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe(list, x => box(x)) : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f04 : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe(list, x => box(x)) : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => box(x) : (x: T[]) => { value: T[]; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ @@ -148,16 +148,16 @@ const f05 = pipe(x => list(x), x => box(x)) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), x => box(x)) : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: any) => any[] > : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : any > : ^^^ >x => box(x) : (x: any[]) => { value: any[]; } @@ -166,92 +166,92 @@ const f05 = pipe(x => list(x), x => box(x)) > : ^^^^^ >box(x) : { value: any[]; } > : ^^^^^^^^^^^^^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : any[] > : ^^^^^ const f06 = pipe(list, pipe(box)); ->f06 : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe(list, pipe(box)) : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f06 : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe(list, pipe(box)) : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >pipe(box) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f07 = pipe(x => list(x), pipe(box)); >f07 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), pipe(box)) : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: any) => any[] > : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : any > : ^^^ >pipe(box) : (x: any[]) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f08 = pipe(x => list(x), pipe(x => box(x))); >f08 : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(x => list(x), pipe(x => box(x))) : (x: any) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: any) => any[] > : ^ ^^^^^^^^^^^^^^^ >x : any > : ^^^ >list(x) : any[] > : ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : any > : ^^^ >pipe(x => box(x)) : (x: any[]) => { value: any[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => box(x) : (x: any[]) => { value: any[]; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : any[] > : ^^^^^ >box(x) : { value: any[]; } > : ^^^^^^^^^^^^^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : any[] > : ^^^^^ const f09 = pipe(list, x => x.length); ->f09 : (a: T) => number -> : ^ ^^^^^^^^^^^^^^^^^ ->pipe(list, x => x.length) : (a: T) => number -> : ^ ^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f09 : (a: T) => number +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe(list, x => x.length) : (a: T) => number +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => x.length : (x: T[]) => number > : ^ ^^^^^^^^^^^^^^^^ >x : T[] @@ -268,8 +268,8 @@ const f10 = pipe(foo); > : ^ ^^^^^^^^^ ^^^^^^^^^^^^ >pipe(foo) : (x: T) => T > : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ @@ -278,124 +278,124 @@ const f11 = pipe(foo, foo); > : ^ ^^^^^^^^^ ^^^^^^^^^^^^ >pipe(foo, foo) : (x: T) => T > : ^ ^^^^^^^^^ ^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ const g00: (x: T) => T[] = pipe(list); ->g00 : (x: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>g00 : (x: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >pipe(list) : (a: T) => T[] > : ^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const g01: (x: T) => { value: T[] } = pipe(list, box); ->g01 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g01 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(list, box) : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const g02: (x: T) => { value: T }[] = pipe(box, list); ->g02 : (x: T) => { value: T; }[] -> : ^ ^^ ^^ ^^^^^ +>g02 : (x: T) => { value: T; }[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T > : ^ >pipe(box, list) : (x: T) => { value: T; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const g03: (x: T) => { value: T[] } = pipe(x => list(x), box); ->g03 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g03 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(x => list(x), box) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: T) => T[] > : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const g04: (x: T) => { value: T[] } = pipe(list, x => box(x)); ->g04 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g04 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(list, x => box(x)) : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => box(x) : (x: T[]) => { value: T[]; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ const g05: (x: T) => { value: T[] } = pipe(x => list(x), x => box(x)) ->g05 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g05 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(x => list(x), x => box(x)) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: T) => T[] > : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >x => box(x) : (x: T[]) => { value: T[]; } @@ -404,106 +404,106 @@ const g05: (x: T) => { value: T[] } = pipe(x => list(x), x => box(x)) > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ const g06: (x: T) => { value: T[] } = pipe(list, pipe(box)); ->g06 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g06 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(list, pipe(box)) : (a: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >pipe(box) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const g07: (x: T) => { value: T[] } = pipe(x => list(x), pipe(box)); ->g07 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g07 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(x => list(x), pipe(box)) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: T) => T[] > : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >pipe(box) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const g08: (x: T) => { value: T[] } = pipe(x => list(x), pipe(x => box(x))); ->g08 : (x: T) => { value: T[]; } -> : ^ ^^ ^^ ^^^^^ +>g08 : (x: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >value : T[] > : ^^^ >pipe(x => list(x), pipe(x => box(x))) : (x: T) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => list(x) : (x: T) => T[] > : ^ ^^^^^^^^^^^ >x : T > : ^ >list(x) : T[] > : ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >pipe(x => box(x)) : (x: T[]) => { value: T[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >x => box(x) : (x: T[]) => { value: T[]; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T[] > : ^^^ >box(x) : { value: T[]; } > : ^^^^^^^^^^^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ const g09: (x: T) => number = pipe(list, x => x.length); ->g09 : (x: T) => number -> : ^ ^^ ^^ ^^^^^ +>g09 : (x: T) => number +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >pipe(list, x => x.length) : (a: T) => number > : ^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => x.length : (x: T[]) => number > : ^ ^^^^^^^^^^^^^^^^ >x : T[] @@ -524,8 +524,8 @@ const g10: (x: T) => T = pipe(foo); > : ^ >pipe(foo) : (x: T) => T > : ^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ @@ -538,16 +538,16 @@ const g12: (x: T) => T = pipe(foo, foo); > : ^ >pipe(foo, foo) : (x: T) => T > : ^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ declare function pipe2(ab: (a: A) => B, cd: (c: C) => D): (a: [A, C]) => [B, D]; ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >ab : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -560,72 +560,72 @@ declare function pipe2(ab: (a: A) => B, cd: (c: C) => D): (a: [A, C] > : ^^^^^^ const f20 = pipe2(list, box); ->f20 : (a: [T, V]) => [T[], { value: V; }] -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->pipe2(list, box) : (a: [T, V]) => [T[], { value: V; }] -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>f20 : (a: [T, V]) => [T[], { value: V; }] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>pipe2(list, box) : (a: [T, V]) => [T[], { value: V; }] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f21 = pipe2(box, list); ->f21 : (a: [V, T]) => [{ value: V; }, T[]] -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ->pipe2(box, list) : (a: [V, T]) => [{ value: V; }, T[]] -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f21 : (a: [V, T]) => [{ value: V; }, T[]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>pipe2(box, list) : (a: [V, T]) => [{ value: V; }, T[]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f22 = pipe2(list, list); ->f22 : (a: [T, T1]) => [T[], T1[]] -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe2(list, list) : (a: [T, T1]) => [T[], T1[]] -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f22 : (a: [T, T1]) => [T[], T1[]] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe2(list, list) : (a: [T, T1]) => [T[], T1[]] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f23 = pipe2(box, box); ->f23 : (a: [V, V1]) => [{ value: V; }, { value: V1; }] -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->pipe2(box, box) : (a: [V, V1]) => [{ value: V; }, { value: V1; }] -> : ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>f23 : (a: [V, V1]) => [{ value: V; }, { value: V1; }] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>pipe2(box, box) : (a: [V, V1]) => [{ value: V; }, { value: V1; }] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f24 = pipe2(f20, f20); ->f24 : (a: [[T, V], [T1, V1]]) => [[T[], { value: V; }], [T1[], { value: V1; }]] -> : ^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe2(f20, f20) : (a: [[T, V], [T1, V1]]) => [[T[], { value: V; }], [T1[], { value: V1; }]] -> : ^ ^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->f20 : (a: [T, V]) => [T[], { value: V; }] -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->f20 : (a: [T, V]) => [T[], { value: V; }] -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>f24 : (a: [[T, V], [T1, V1]]) => [[T[], { value: V; }], [T1[], { value: V1; }]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe2(f20, f20) : (a: [[T, V], [T1, V1]]) => [[T[], { value: V; }], [T1[], { value: V1; }]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f20 : (a: [T, V]) => [T[], { value: V; }] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>f20 : (a: [T, V]) => [T[], { value: V; }] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ const f25 = pipe2(foo, foo); >f25 : (a: [T, T1]) => [T, T1] > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >pipe2(foo, foo) : (a: [T, T1]) => [T, T1] > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >foo : (x: T) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >foo : (x: T) => T @@ -636,16 +636,16 @@ const f26 = pipe2(f25, f25); > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe2(f25, f25) : (a: [[T, T1], [T2, T3]]) => [[T, T1], [T2, T3]] > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe2 : (ab: (a: A) => B, cd: (c: C) => D) => (a: [A, C]) => [B, D] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f25 : (a: [T, T1]) => [T, T1] > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >f25 : (a: [T, T1]) => [T, T1] > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ declare function pipe3(ab: (a: A) => B, ac: (a: A) => C): (a: A) => [B, C]; ->pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >ab : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -658,44 +658,44 @@ declare function pipe3(ab: (a: A) => B, ac: (a: A) => C): (a: A) => [B, > : ^ const f30 = pipe3(list, box); ->f30 : (a: T) => [T[], { value: T; }] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe3(list, box) : (a: T) => [T[], { value: T; }] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>f30 : (a: T) => [T[], { value: T; }] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe3(list, box) : (a: T) => [T[], { value: T; }] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f31 = pipe3(box, list); ->f31 : (a: V) => [{ value: V; }, V[]] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ->pipe3(box, list) : (a: V) => [{ value: V; }, V[]] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ->pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f31 : (a: V) => [{ value: V; }, V[]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>pipe3(box, list) : (a: V) => [{ value: V; }, V[]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f32 = pipe3(list, list); ->f32 : (a: T) => [T[], T[]] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ->pipe3(list, list) : (a: T) => [T[], T[]] -> : ^ ^^ ^^^^^^^^^^^^^^^^^^ ->pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f32 : (a: T) => [T[], T[]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>pipe3(list, list) : (a: T) => [T[], T[]] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>pipe3 : (ab: (a: A) => B, ac: (a: A) => C) => (a: A) => [B, C] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ declare function pipe4(funcs: [(a: A) => B, (b: B) => C]): (a: A) => C; ->pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >funcs : [(a: A) => B, (b: B) => C] > : ^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ ^ >a : A @@ -706,36 +706,36 @@ declare function pipe4(funcs: [(a: A) => B, (b: B) => C]): (a: A) => C; > : ^ const f40 = pipe4([list, box]); ->f40 : (a: T) => { value: T[]; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ->pipe4([list, box]) : (a: T) => { value: T[]; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ->pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->[list, box] : [(a: T) => T[], (x: V) => { value: V; }] -> : ^^ ^^ ^^ ^^^^^ ^^^ ^^ ^^ ^^^^^ ^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>f40 : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>pipe4([list, box]) : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>[list, box] : [(a: T) => T[], (x: V) => { value: V; }] +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const f41 = pipe4([box, list]); ->f41 : (a: V) => { value: V; }[] -> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^ ->pipe4([box, list]) : (a: V) => { value: V; }[] -> : ^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^ ->pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->[box, list] : [(x: V) => { value: V; }, (a: T) => T[]] -> : ^^ ^^ ^^ ^^^^^ ^^^ ^^ ^^ ^^^^^ ^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>f41 : (a: V) => { value: V; }[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +>pipe4([box, list]) : (a: V) => { value: V; }[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^ +>pipe4 : (funcs: [(a: A) => B, (b: B) => C]) => (a: A) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>[box, list] : [(x: V) => { value: V; }, (a: T) => T[]] +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ declare function pipe5(f: (a: A) => B): { f: (a: A) => B }; ->pipe5 : (f: (a: A) => B) => { f: (a: A) => B; } -> : ^ ^^ ^^ ^^ ^^^^^ +>pipe5 : (f: (a: A) => B) => { f: (a: A) => B; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -750,14 +750,14 @@ const f50 = pipe5(list); // No higher order inference > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe5(list) : { f: (a: unknown) => unknown[]; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe5 : (f: (a: A) => B) => { f: (a: A) => B; } -> : ^ ^^ ^^ ^^ ^^^^^ ->list : (a: T) => T[] -> : ^ ^^ ^^ ^^^^^ +>pipe5 : (f: (a: A) => B) => { f: (a: A) => B; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list : (a: T) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ declare function wrap3(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: B) => C; ->wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A, b1: B, b2: B) => C > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : A @@ -774,8 +774,8 @@ declare function wrap3(f: (a: A, b1: B, b2: B) => C): (a: A, b1: B, b2: > : ^ declare function baz(t1: T, t2: T, u: U): [T, U]; ->baz : (t1: T, t2: T, u: U) => [T, U] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>baz : (t1: T, t2: T, u: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t1 : T > : ^ >t2 : T @@ -784,18 +784,18 @@ declare function baz(t1: T, t2: T, u: U): [T, U]; > : ^ let f60 = wrap3(baz); ->f60 : (a: T, b1: U, b2: U) => [T, U] -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ->wrap3(baz) : (a: T, b1: U, b2: U) => [T, U] -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^ ->wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->baz : (t1: T, t2: T, u: U) => [T, U] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f60 : (a: T, b1: U, b2: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +>wrap3(baz) : (a: T, b1: U, b2: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +>wrap3 : (f: (a: A, b1: B, b2: B) => C) => (a: A, b1: B, b2: B) => C +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>baz : (t1: T, t2: T, u: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ declare const list2: { ->list2 : { (a: T): T[]; foo: string; bar(): number; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ +>list2 : { (a: T): T[]; foo: string; bar(): number; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ (a: T): T[]; >a : T @@ -811,28 +811,28 @@ declare const list2: { } let f70 = pipe(list2, box); ->f70 : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe(list2, box) : (a: T) => { value: T[]; } -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->list2 : { (a: T): T[]; foo: string; bar(): number; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ +>f70 : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe(list2, box) : (a: T) => { value: T[]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>list2 : { (a: T): T[]; foo: string; bar(): number; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ let f71 = pipe(box, list2); ->f71 : (x: V) => { value: V; }[] -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ->pipe(box, list2) : (x: V) => { value: V; }[] -> : ^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ->box : (x: V) => { value: V; } -> : ^ ^^ ^^ ^^^^^ ->list2 : { (a: T): T[]; foo: string; bar(): number; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ +>f71 : (x: V) => { value: V; }[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +>pipe(box, list2) : (x: V) => { value: V; }[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>box : (x: V) => { value: V; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>list2 : { (a: T): T[]; foo: string; bar(): number; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^^ declare class Point { >Point : Point @@ -873,8 +873,8 @@ declare class Bag { } function asFunction(cf: new (...args: A) => B) { ->asFunction : (cf: new (...args: A) => B) => (...args: A) => B -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>asFunction : (cf: new (...args: A) => B) => (...args: A) => B +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >cf : new (...args: A) => B > : ^^^^^^^^ ^^ ^^^^^ >args : A @@ -900,18 +900,18 @@ const newPoint = asFunction(Point); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >asFunction(Point) : (x: number, y: number) => Point > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->asFunction : (cf: new (...args: A) => B) => (...args: A) => B -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>asFunction : (cf: new (...args: A) => B) => (...args: A) => B +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >Point : typeof Point > : ^^^^^^^^^^^^ const newBag = asFunction(Bag); ->newBag : (...args: T[]) => Bag -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ->asFunction(Bag) : (...args: T[]) => Bag -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ ->asFunction : (cf: new (...args: A) => B) => (...args: A) => B -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>newBag : (...args: T[]) => Bag +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +>asFunction(Bag) : (...args: T[]) => Bag +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +>asFunction : (cf: new (...args: A) => B) => (...args: A) => B +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >Bag : typeof Bag > : ^^^^^^^^^^ @@ -958,8 +958,8 @@ const bag2 = newBag('a', 'b', 'c'); > : ^^^^^^^^^^^ >newBag('a', 'b', 'c') : Bag > : ^^^^^^^^^^^ ->newBag : (...args: T[]) => Bag -> : ^ ^^^^^ ^^^^^^^^^^^^^^^^ +>newBag : (...args: T[]) => Bag +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >'a' : "a" > : ^^^ >'b' : "b" @@ -987,8 +987,8 @@ type CompClass

= new (props: P) => Comp

; > : ^ declare function myHoc

(C: CompClass

): CompClass

; ->myHoc :

(C: CompClass

) => CompClass

-> : ^ ^^ ^^ ^^^^^ +>myHoc :

(C: CompClass

) => CompClass

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >C : CompClass

> : ^^^^^^^^^^^^ @@ -1007,20 +1007,20 @@ declare class GenericComp extends Comp> {} > : ^^^^^^^^^^^^^^^^^^^^^ const GenericComp2 = myHoc(GenericComp); ->GenericComp2 : new (props: GenericProps) => Comp> -> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->myHoc(GenericComp) : new (props: GenericProps) => Comp> -> : ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->myHoc :

(C: CompClass

) => CompClass

-> : ^ ^^ ^^ ^^^^^ +>GenericComp2 : new (props: GenericProps) => Comp> +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>myHoc(GenericComp) : new (props: GenericProps) => Comp> +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>myHoc :

(C: CompClass

) => CompClass

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >GenericComp : typeof GenericComp > : ^^^^^^^^^^^^^^^^^^ // #417 function mirror(f: (a: A) => B): (a: A) => B { return f; } ->mirror : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^ ^^ ^^^^^ +>mirror : (f: (a: A) => B) => (a: A) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -1031,14 +1031,14 @@ function mirror(f: (a: A) => B): (a: A) => B { return f; } > : ^ ^^ ^^^^^ var identityM = mirror(identity); ->identityM : (a: T) => T -> : ^ ^^ ^^^^^^^^^ ->mirror(identity) : (a: T) => T -> : ^ ^^ ^^^^^^^^^ ->mirror : (f: (a: A) => B) => (a: A) => B -> : ^ ^^ ^^ ^^ ^^^^^ ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>identityM : (a: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>mirror(identity) : (a: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>mirror : (f: (a: A) => B) => (a: A) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ var x = 1; >x : number @@ -1051,8 +1051,8 @@ var y = identity(x); > : ^^^^^^ >identity(x) : number > : ^^^^^^ ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : number > : ^^^^^^ @@ -1061,16 +1061,16 @@ var z = identityM(x); > : ^^^^^^ >identityM(x) : number > : ^^^^^^ ->identityM : (a: T) => T -> : ^ ^^ ^^^^^^^^^ +>identityM : (a: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >x : number > : ^^^^^^ // #3038 export function keyOf(value: { key: a; }): a { ->keyOf : (value: { key: a; }) => a -> : ^ ^^ ^^ ^^^^^ +>keyOf : (value: { key: a; }) => a +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : { key: a; } > : ^^^^^^^ ^^^ >key : a @@ -1101,8 +1101,8 @@ var data: Data[] = []; > : ^^^^^^^ declare function toKeys(values: a[], toKey: (value: a) => string): string[]; ->toKeys : (values: a[], toKey: (value: a) => string) => string[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>toKeys : (values: a[], toKey: (value: a) => string) => string[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >values : a[] > : ^^^ >toKey : (value: a) => string @@ -1113,18 +1113,18 @@ declare function toKeys(values: a[], toKey: (value: a) => string): string[]; toKeys(data, keyOf); // Error >toKeys(data, keyOf) : string[] > : ^^^^^^^^ ->toKeys : (values: a[], toKey: (value: a) => string) => string[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>toKeys : (values: a[], toKey: (value: a) => string) => string[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >data : Data[] > : ^^^^^^ ->keyOf : (value: { key: a; }) => a -> : ^ ^^ ^^ ^^^^^ +>keyOf : (value: { key: a; }) => a +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ // #9366 function flip(f: (a: a, b: b) => c): (b: b, a: a) => c { ->flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: a, b: b) => c > : ^ ^^ ^^ ^^ ^^^^^ >a : a @@ -1153,8 +1153,8 @@ function flip(f: (a: a, b: b) => c): (b: b, a: a) => c { > : ^ } function zip(x: T, y: U): [T, U] { ->zip : (x: T, y: U) => [T, U] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>zip : (x: T, y: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -1170,36 +1170,36 @@ function zip(x: T, y: U): [T, U] { } var expected: (y: U, x: T) => [T, U] = flip(zip); ->expected : (y: U, x: T) => [T, U] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>expected : (y: U, x: T) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >y : U > : ^ >x : T > : ^ >flip(zip) : (b: U, a: T) => [T, U] > : ^ ^^^^^ ^^^^^^^^^^^^^^ ->flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->zip : (x: T, y: U) => [T, U] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>zip : (x: T, y: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ var actual = flip(zip); ->actual : (b: U, a: T) => [T, U] -> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^ ->flip(zip) : (b: U, a: T) => [T, U] -> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^ ->flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->zip : (x: T, y: U) => [T, U] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>actual : (b: U, a: T) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +>flip(zip) : (b: U, a: T) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +>flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>zip : (x: T, y: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ // #9366 const map = (transform: (t: T) => U) => ->map : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ ->(transform: (t: T) => U) => (arr: T[]) => arr.map(transform) : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>map : (transform: (t: T) => U) => (arr: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>(transform: (t: T) => U) => (arr: T[]) => arr.map(transform) : (transform: (t: T) => U) => (arr: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >transform : (t: T) => U > : ^ ^^ ^^^^^ >t : T @@ -1212,12 +1212,12 @@ const map = (transform: (t: T) => U) => > : ^^^ >arr.map(transform) : U[] > : ^^^ ->arr.map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ +>arr.map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >arr : T[] > : ^^^ ->map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] -> : ^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ +>map : (callbackfn: (value: T, index: number, array: T[]) => U_1, thisArg?: any) => U_1[] +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ >transform : (t: T) => U > : ^ ^^ ^^^^^ @@ -1238,8 +1238,8 @@ const arr: string[] = map(identityStr)(['a']); > : ^^^^^^^^ >map(identityStr) : (arr: string[]) => string[] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ->map : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>map : (transform: (t: T) => U) => (arr: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ >identityStr : (t: string) => string > : ^ ^^ ^^^^^^^^^^^ >['a'] : string[] @@ -1252,12 +1252,12 @@ const arr1: string[] = map(identity)(['a']); > : ^^^^^^^^ >map(identity)(['a']) : string[] > : ^^^^^^^^ ->map(identity) : (arr: T[]) => T[] -> : ^ ^^ ^^^^^^^^^^^^^ ->map : (transform: (t: T) => U) => (arr: T[]) => U[] -> : ^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^ ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>map(identity) : (arr: T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ +>map : (transform: (t: T) => U) => (arr: T[]) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >['a'] : string[] > : ^^^^^^^^ >'a' : "a" @@ -1266,8 +1266,8 @@ const arr1: string[] = map(identity)(['a']); // #9949 function of2(one: a, two: b): [a, b] { ->of2 : (one: a, two: b) => [a, b] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>of2 : (one: a, two: b) => [a, b] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >one : a > : ^ >two : b @@ -1283,14 +1283,14 @@ function of2(one: a, two: b): [a, b] { } const flipped = flip(of2); ->flipped : (b: b, a: a) => [a, b] -> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^ ->flip(of2) : (b: b, a: a) => [a, b] -> : ^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^ ->flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c -> : ^ ^^ ^^ ^^ ^^ ^^^^^ ->of2 : (one: a, two: b) => [a, b] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>flipped : (b: b, a: a) => [a, b] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +>flip(of2) : (b: b, a: a) => [a, b] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^ +>flip : (f: (a: a, b: b) => c) => (b: b, a: a) => c +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>of2 : (one: a, two: b) => [a, b] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ // #29904.1 @@ -1301,14 +1301,14 @@ type Component

= (props: P) => {}; > : ^ declare const myHoc1:

(C: Component

) => Component

; ->myHoc1 :

(C: Component

) => Component

-> : ^ ^^ ^^ ^^^^^ +>myHoc1 :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >C : Component

> : ^^^^^^^^^^^^ declare const myHoc2:

(C: Component

) => Component

; ->myHoc2 :

(C: Component

) => Component

-> : ^ ^^ ^^ ^^^^^ +>myHoc2 :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >C : Component

> : ^^^^^^^^^^^^ @@ -1319,20 +1319,20 @@ declare const MyComponent1: Component<{ foo: 1 }>; > : ^ const enhance = pipe( ->enhance :

(C: Component

) => Component

-> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe( myHoc1, myHoc2,) :

(C: Component

) => Component

-> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>enhance :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe( myHoc1, myHoc2,) :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ myHoc1, ->myHoc1 :

(C: Component

) => Component

-> : ^ ^^ ^^ ^^^^^ +>myHoc1 :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ myHoc2, ->myHoc2 :

(C: Component

) => Component

-> : ^ ^^ ^^ ^^^^^ +>myHoc2 :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ); @@ -1341,8 +1341,8 @@ const MyComponent2 = enhance(MyComponent1); > : ^^^^^^^^^^^^^^^^^ ^^^^ >enhance(MyComponent1) : Component<{ foo: 1; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ ->enhance :

(C: Component

) => Component

-> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>enhance :

(C: Component

) => Component

+> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >MyComponent1 : Component<{ foo: 1; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ @@ -1353,8 +1353,8 @@ const fn20 = pipe((_a?: {}) => 1); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe((_a?: {}) => 1) : (_a?: {} | undefined) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >(_a?: {}) => 1 : (_a?: {}) => number > : ^ ^^^ ^^^^^^^^^^^ >_a : {} | undefined @@ -1375,8 +1375,8 @@ const fn30: Fn = pipe( > : ^^ >pipe( x => x + 1, x => x * 2,) : (x: number) => number > : ^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ x => x + 1, >x => x + 1 : (x: number) => number @@ -1409,30 +1409,30 @@ const promise = Promise.resolve(1); > : ^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ promise.then( >promise.then( pipe( x => x + 1, x => x * 2, ),) : Promise > : ^^^^^^^^^^^^^^^ ->promise.then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>promise.then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >promise : Promise > : ^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pipe( >pipe( x => x + 1, x => x * 2, ) : (x: number) => number > : ^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ x => x + 1, >x => x + 1 : (x: number) => number @@ -1474,8 +1474,8 @@ declare const orUndefined: (name: string) => string | undefined; > : ^^^^^^ declare const identity: (value: T) => T; ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -1484,8 +1484,8 @@ const fn40 = pipe( > : ^^^^^^^^^^^^^^^^^^^^^^^^ >pipe( getString, string => orUndefined(string), identity,) : () => string | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ getString, >getString : () => string @@ -1504,8 +1504,8 @@ const fn40 = pipe( > : ^^^^^^ identity, ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ); @@ -1516,8 +1516,8 @@ declare const getArray: () => string[]; > : ^^^^^^ declare const first: (ts: T[]) => T; ->first : (ts: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>first : (ts: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ts : T[] > : ^^^ @@ -1526,8 +1526,8 @@ const fn60 = pipe( > : ^^^^^^^^^^^^ >pipe( getArray, x => x, first,) : () => string > : ^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ getArray, >getArray : () => string[] @@ -1542,8 +1542,8 @@ const fn60 = pipe( > : ^^^^^^^^ first, ->first : (ts: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>first : (ts: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ); @@ -1552,20 +1552,20 @@ const fn61 = pipe( > : ^^^^^^^^^^^^ >pipe( getArray, identity, first,) : () => string > : ^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ getArray, >getArray : () => string[] > : ^^^^^^ identity, ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ first, ->first : (ts: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>first : (ts: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ); @@ -1574,8 +1574,8 @@ const fn62 = pipe( > : ^^^^^^^^^^^^ >pipe( getArray, x => x, x => first(x),) : () => string > : ^^^^^^^^^^^^ ->pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>pipe : { (ab: (...args: A) => B): (...args: A) => B; (ab: (...args: A) => B, bc: (b: B) => C): (...args: A) => C; (ab: (...args: A) => B, bc: (b: B) => C, cd: (c: C) => D): (...args: A) => D; } +> : ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ getArray, >getArray : () => string[] @@ -1596,8 +1596,8 @@ const fn62 = pipe( > : ^^^^^^^^ >first(x) : string > : ^^^^^^ ->first : (ts: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>first : (ts: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string[] > : ^^^^^^^^ @@ -1606,8 +1606,8 @@ const fn62 = pipe( // Repro from #30297 declare function foo2(fn: T, a?: U, b?: U): [T, U]; ->foo2 : (fn: T, a?: U, b?: U) => [T, U] -> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >fn : T > : ^ >a : U | undefined @@ -1618,34 +1618,34 @@ declare function foo2(fn: T, a?: U, b?: U): [T, U]; foo2(() => {}); >foo2(() => {}) : [() => void, () => void] > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->foo2 : (fn: T, a?: U, b?: U) => [T, U] -> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >() => {} : () => void > : ^^^^^^^^^^ foo2(identity); ->foo2(identity) : [(value: T) => T, (value: T) => T] -> : ^^ ^^ ^^ ^^^^^ ^^^ ^^ ^^ ^^^^^ ^ ->foo2 : (fn: T, a?: U, b?: U) => [T, U] -> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>foo2(identity) : [(value: T) => T, (value: T) => T] +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ foo2(identity, 1); ->foo2(identity, 1) : [(value: T) => T, number] -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^ ->foo2 : (fn: T, a?: U, b?: U) => [T, U] -> : ^ ^^ ^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>foo2(identity, 1) : [(value: T) => T, number] +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^ +>foo2 : (fn: T, a?: U, b?: U) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >1 : 1 > : ^ // Repro from #30324 declare function times(fn: (i: number) => T): (n: number) => T[]; ->times : (fn: (i: number) => T) => (n: number) => T[] -> : ^ ^^ ^^ ^^^^^ +>times : (fn: (i: number) => T) => (n: number) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fn : (i: number) => T > : ^ ^^ ^^^^^ >i : number @@ -1660,10 +1660,10 @@ const a2 = times(identity)(5); // => [0, 1, 2, 3, 4] > : ^^^^^^^^ >times(identity) : (n: number) => number[] > : ^ ^^ ^^^^^^^^^^^^^ ->times : (fn: (i: number) => T) => (n: number) => T[] -> : ^ ^^ ^^ ^^^^^ ->identity : (value: T) => T -> : ^ ^^ ^^ ^^^^^ +>times : (fn: (i: number) => T) => (n: number) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>identity : (value: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/genericFunctionParameters.types b/tests/baselines/reference/genericFunctionParameters.types index cf3849bf9038b..756959d083fbd 100644 --- a/tests/baselines/reference/genericFunctionParameters.types +++ b/tests/baselines/reference/genericFunctionParameters.types @@ -2,24 +2,24 @@ === genericFunctionParameters.ts === declare function f1(cb: (x: S) => T): T; ->f1 : (cb: (x: S) => T) => T -> : ^ ^^ ^^ ^^^^^ ->cb : (x: S) => T -> : ^ ^^ ^^ ^^^^^ +>f1 : (cb: (x: S) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>cb : (x: S) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : S > : ^ declare function f2(cb: (x: S) => T): T; ->f2 : (cb: (x: S) => T) => T -> : ^ ^^ ^^ ^^^^^ +>f2 : (cb: (x: S) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : (x: S) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >x : S > : ^ declare function f3(cb: >(x: S) => T): T; ->f3 : (cb: >(x: S) => T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (cb: >(x: S) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cb : >(x: S) => T > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >x : S @@ -30,10 +30,10 @@ let x1 = f1(x => x); // {} > : ^^^^^^^ >f1(x => x) : unknown > : ^^^^^^^ ->f1 : (cb: (x: S) => T) => T -> : ^ ^^ ^^ ^^^^^ ->x => x : (x: S) => S -> : ^ ^^ ^^^^^^^^^ +>f1 : (cb: (x: S) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>x => x : (x: S) => S +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >x : S > : ^ >x : S @@ -44,8 +44,8 @@ let x2 = f2(x => x); // number > : ^^^^^^ >f2(x => x) : number > : ^^^^^^ ->f2 : (cb: (x: S) => T) => T -> : ^ ^^ ^^ ^^^^^ +>f2 : (cb: (x: S) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => x : (x: S) => S > : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ >x : S @@ -58,8 +58,8 @@ let x3 = f3(x => x); // Array > : ^^^^^ >f3(x => x) : any[] > : ^^^^^ ->f3 : (cb: >(x: S) => T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (cb: >(x: S) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x => x : (x: S) => S > : ^ ^^^^^^^^^^^^^^ ^^^^^^^^^ >x : S @@ -70,10 +70,10 @@ let x3 = f3(x => x); // Array // Repro from #19345 declare const s: (go: (ops: { init(): S; }) => R) => R; ->s : (go: (ops: { init(): S; }) => R) => R -> : ^ ^^ ^^ ^^^^^ ->go : (ops: { init(): S; }) => R -> : ^ ^^ ^^ ^^^^^ +>s : (go: (ops: { init(): S; }) => R) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>go : (ops: { init(): S; }) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ops : { init(): S; } > : ^^^^^^^^^^ ^^^ >init : () => S @@ -84,10 +84,10 @@ const x = s(a => a.init()); // x is any, should have been {} > : ^^^^^^^ >s(a => a.init()) : unknown > : ^^^^^^^ ->s : (go: (ops: { init(): S; }) => R) => R -> : ^ ^^ ^^ ^^^^^ ->a => a.init() : (a: { init(): S; }) => S -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>s : (go: (ops: { init(): S; }) => R) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>a => a.init() : (a: { init(): S; }) => S +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : { init(): S; } > : ^^^^^^^^^^^^^^ >a.init() : S diff --git a/tests/baselines/reference/genericFunctionsNotContextSensitive.types b/tests/baselines/reference/genericFunctionsNotContextSensitive.types index 4c2d8bc6eaa19..e2b60722b5443 100644 --- a/tests/baselines/reference/genericFunctionsNotContextSensitive.types +++ b/tests/baselines/reference/genericFunctionsNotContextSensitive.types @@ -18,18 +18,18 @@ const f = (x: G) => void>(_: F): F => _; > : ^ const a = f((_: K) => _ => ({})); // (_: K) => (_: G) => {} ->a : (_: K) => (_: G) => {} -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^ ->f((_: K) => _ => ({})) : (_: K) => (_: G) => {} -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^ +>a : (_: K) => (_: G) => {} +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>f((_: K) => _ => ({})) : (_: K) => (_: G) => {} +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >f : (x: G) => void>(_: F) => F > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ ->(_: K) => _ => ({}) : (_: K) => (_: G) => {} -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^ +>(_: K) => _ => ({}) : (_: K) => (_: G) => {} +> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >_ : K > : ^ ->_ => ({}) : (_: G) => {} -> : ^ ^^ ^^^^^^^^^^ +>_ => ({}) : (_: G) => {} +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >_ : G > : ^ >({}) : {} diff --git a/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types b/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types index 008056e556c20..a5b9891768ae8 100644 --- a/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types +++ b/tests/baselines/reference/genericIndexedAccessMethodIntersectionCanBeAccessed.types @@ -28,10 +28,10 @@ type Service = { }; export const createService = ( ->createService : (ServiceCtr: ExtendedService & Service) => void -> : ^ ^^ ^^ ^^^^^^^^^ ->( ServiceCtr: ExtendedService & Service) => { Object.keys(ServiceCtr).forEach(key => { const method = (ServiceCtr)[key as keyof T]; const {__$daemonMode, __$action, id} = method; })} : (ServiceCtr: ExtendedService & Service) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>createService : (ServiceCtr: ExtendedService & Service) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>( ServiceCtr: ExtendedService & Service) => { Object.keys(ServiceCtr).forEach(key => { const method = (ServiceCtr)[key as keyof T]; const {__$daemonMode, __$action, id} = method; })} : (ServiceCtr: ExtendedService & Service) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ServiceCtr: ExtendedService & Service >ServiceCtr : ExtendedService & Service diff --git a/tests/baselines/reference/genericObjectRest.types b/tests/baselines/reference/genericObjectRest.types index 82629fedda86f..187969ba324a6 100644 --- a/tests/baselines/reference/genericObjectRest.types +++ b/tests/baselines/reference/genericObjectRest.types @@ -122,8 +122,8 @@ function f2(obj: T) { } function f3(obj: T, k1: K1, k2: K2) { ->f3 : (obj: T, k1: K1, k2: K2) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (obj: T, k1: K1, k2: K2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >k1 : K1 diff --git a/tests/baselines/reference/genericRestParameters1.types b/tests/baselines/reference/genericRestParameters1.types index 12a2957921f4e..a7e87aad5021d 100644 --- a/tests/baselines/reference/genericRestParameters1.types +++ b/tests/baselines/reference/genericRestParameters1.types @@ -672,8 +672,8 @@ function g11(u: U, v: V) { } function call(f: (...args: T) => U, ...args: T) { ->call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ +>call : (f: (...args: T) => U, ...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ >f : (...args: T) => U > : ^^^^ ^^ ^^^^^ >args : T @@ -693,8 +693,8 @@ function call(f: (...args: T) => U, ...args: T) { } function callr(args: T, f: (...args: T) => U) { ->callr : (args: T, f: (...args: T) => U) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>callr : (args: T, f: (...args: T) => U) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >args : T > : ^ >f : (...args: T) => U @@ -722,8 +722,8 @@ declare function f15(a: string, b: number): string | number; > : ^^^^^^ declare function f16(a: A, b: B): A | B; ->f16 : (a: A, b: B) => A | B -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f16 : (a: A, b: B) => A | B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >b : B @@ -734,8 +734,8 @@ let x20 = call((x, y) => x + y, 10, 20); // number > : ^^^^^^ >call((x, y) => x + y, 10, 20) : number > : ^^^^^^ ->call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ +>call : (f: (...args: T) => U, ...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ >(x, y) => x + y : (x: number, y: number) => number > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number @@ -758,8 +758,8 @@ let x21 = call((x, y) => x + y, 10, "hello"); // string > : ^^^^^^ >call((x, y) => x + y, 10, "hello") : string > : ^^^^^^ ->call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ +>call : (f: (...args: T) => U, ...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ >(x, y) => x + y : (x: number, y: string) => string > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >x : number @@ -782,8 +782,8 @@ let x22 = call(f15, "hello", 42); // string | number > : ^^^^^^^^^^^^^^^ >call(f15, "hello", 42) : string | number > : ^^^^^^^^^^^^^^^ ->call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ +>call : (f: (...args: T) => U, ...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ >f15 : (a: string, b: number) => string | number > : ^ ^^ ^^ ^^ ^^^^^ >"hello" : "hello" @@ -796,10 +796,10 @@ let x23 = call(f16, "hello", 42); // unknown > : ^^^^^^^^^^^^^^^ >call(f16, "hello", 42) : string | number > : ^^^^^^^^^^^^^^^ ->call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ ->f16 : (a: A, b: B) => A | B -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>call : (f: (...args: T) => U, ...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ +>f16 : (a: A, b: B) => A | B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ >42 : 42 @@ -810,10 +810,10 @@ let x24 = call<[string, number], string | number>(f16, "hello", 42); // string > : ^^^^^^^^^^^^^^^ >call<[string, number], string | number>(f16, "hello", 42) : string | number > : ^^^^^^^^^^^^^^^ ->call : (f: (...args: T) => U, ...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^ ->f16 : (a: A, b: B) => A | B -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>call : (f: (...args: T) => U, ...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^ +>f16 : (a: A, b: B) => A | B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ >42 : 42 @@ -824,8 +824,8 @@ let x30 = callr(sn, (x, y) => x + y); // string > : ^^^^^^ >callr(sn, (x, y) => x + y) : string > : ^^^^^^ ->callr : (args: T, f: (...args: T) => U) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>callr : (args: T, f: (...args: T) => U) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >sn : [string, number] > : ^^^^^^^^^^^^^^^^ >(x, y) => x + y : (x: string, y: number) => string @@ -846,8 +846,8 @@ let x31 = callr(sn, f15); // string | number > : ^^^^^^^^^^^^^^^ >callr(sn, f15) : string | number > : ^^^^^^^^^^^^^^^ ->callr : (args: T, f: (...args: T) => U) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>callr : (args: T, f: (...args: T) => U) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >sn : [string, number] > : ^^^^^^^^^^^^^^^^ >f15 : (a: string, b: number) => string | number @@ -858,16 +858,16 @@ let x32 = callr(sn, f16); // string | number > : ^^^^^^^^^^^^^^^ >callr(sn, f16) : string | number > : ^^^^^^^^^^^^^^^ ->callr : (args: T, f: (...args: T) => U) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>callr : (args: T, f: (...args: T) => U) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >sn : [string, number] > : ^^^^^^^^^^^^^^^^ ->f16 : (a: A, b: B) => A | B -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f16 : (a: A, b: B) => A | B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ function bind(f: (x: T, ...rest: U) => V, x: T) { ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f : (x: T, ...rest: U) => V > : ^ ^^ ^^^^^ ^^ ^^^^^ >x : T @@ -909,8 +909,8 @@ const f21 = bind(f20, 42); // (y: string, z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bind(f20, 42) : (y: string, z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f20 : (x: number, y: string, z: boolean) => string[] > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >42 : 42 @@ -921,8 +921,8 @@ const f22 = bind(f21, "hello"); // (z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >bind(f21, "hello") : (z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f21 : (y: string, z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" @@ -933,8 +933,8 @@ const f23 = bind(f22, true); // () => string[] > : ^^^^^^^^^^^^^^ >bind(f22, true) : () => string[] > : ^^^^^^^^^^^^^^ ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f22 : (z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -991,8 +991,8 @@ const g21 = bind(g20, 42); // (y: string, z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bind(g20, 42) : (y?: string | undefined, z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >g20 : (x: number, y?: string, z?: boolean) => string[] > : ^ ^^ ^^ ^^^ ^^ ^^^ ^^^^^ >42 : 42 @@ -1003,8 +1003,8 @@ const g22 = bind(g21, "hello"); // (z: boolean) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >bind(g21, "hello") : (z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >g21 : (y?: string | undefined, z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"hello" : "hello" @@ -1015,8 +1015,8 @@ const g23 = bind(g22, true); // () => string[] > : ^^^^^^^^^^^^^^ >bind(g22, true) : () => string[] > : ^^^^^^^^^^^^^^ ->bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>bind : (f: (x: T, ...rest: U) => V, x: T) => (...rest: U) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >g22 : (z?: boolean | undefined) => string[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true @@ -1097,8 +1097,8 @@ g23(); > : ^^^^^^^^^^^^^^ declare function f30 any)[]>(x: T, ...args: U): U; ->f30 : any)[]>(x: T, ...args: U) => U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>f30 : any)[]>(x: T, ...args: U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -1111,8 +1111,8 @@ const c30 = f30(42, x => "" + x, x => x + 1); // [(x: number) => string, (x: nu > : ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f30(42, x => "" + x, x => x + 1) : [(x: number) => string, (x: number) => number] > : ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->f30 : any)[]>(x: T, ...args: U) => U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>f30 : any)[]>(x: T, ...args: U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ >x => "" + x : (x: number) => string diff --git a/tests/baselines/reference/genericRestParameters3.types b/tests/baselines/reference/genericRestParameters3.types index 71754befe9618..34db0a3b714fa 100644 --- a/tests/baselines/reference/genericRestParameters3.types +++ b/tests/baselines/reference/genericRestParameters3.types @@ -259,8 +259,8 @@ let b = bar>(10, 20); // Error > : ^^ declare function baz(...args: CoolArray): void; ->baz : (...args: CoolArray) => void -> : ^ ^^^^^ ^^ ^^^^^ +>baz : (...args: CoolArray) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : CoolArray > : ^^^^^^^^^^^^ @@ -271,22 +271,22 @@ declare const ca: CoolArray; baz(); // Error >baz() : void > : ^^^^ ->baz : (...args: CoolArray) => void -> : ^ ^^^^^ ^^ ^^^^^ +>baz : (...args: CoolArray) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ baz(1); // Error >baz(1) : void > : ^^^^ ->baz : (...args: CoolArray) => void -> : ^ ^^^^^ ^^ ^^^^^ +>baz : (...args: CoolArray) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >1 : 1 > : ^ baz(1, 2); // Error >baz(1, 2) : void > : ^^^^ ->baz : (...args: CoolArray) => void -> : ^ ^^^^^ ^^ ^^^^^ +>baz : (...args: CoolArray) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >1 : 1 > : ^ >2 : 2 @@ -295,8 +295,8 @@ baz(1, 2); // Error baz(...ca); // Error >baz(...ca) : void > : ^^^^ ->baz : (...args: CoolArray) => void -> : ^ ^^^^^ ^^ ^^^^^ +>baz : (...args: CoolArray) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >...ca : number > : ^^^^^^ >ca : CoolArray diff --git a/tests/baselines/reference/genericUnboundedTypeParamAssignability.errors.txt b/tests/baselines/reference/genericUnboundedTypeParamAssignability.errors.txt index 8dad05aa147fd..bd834b34ffaf9 100644 --- a/tests/baselines/reference/genericUnboundedTypeParamAssignability.errors.txt +++ b/tests/baselines/reference/genericUnboundedTypeParamAssignability.errors.txt @@ -24,11 +24,9 @@ genericUnboundedTypeParamAssignability.ts(17,5): error TS2339: Property 'toStrin f2(t); // error in strict, unbounded T doesn't satisfy the constraint ~ !!! error TS2345: Argument of type 'T' is not assignable to parameter of type '{}'. -!!! related TS2208 genericUnboundedTypeParamAssignability.ts:13:15: This type parameter might need an `extends {}` constraint. f3(t); // error in strict, unbounded T doesn't satisfy the constraint ~ !!! error TS2345: Argument of type 'T' is not assignable to parameter of type 'Record'. -!!! related TS2208 genericUnboundedTypeParamAssignability.ts:13:15: This type parameter might need an `extends Record` constraint. t.toString(); // error, for the same reason as f1() ~~~~~~~~ !!! error TS2339: Property 'toString' does not exist on type 'T'. diff --git a/tests/baselines/reference/genericUnboundedTypeParamAssignability.types b/tests/baselines/reference/genericUnboundedTypeParamAssignability.types index 92816a1a292db..0896ef6e62157 100644 --- a/tests/baselines/reference/genericUnboundedTypeParamAssignability.types +++ b/tests/baselines/reference/genericUnboundedTypeParamAssignability.types @@ -2,8 +2,8 @@ === genericUnboundedTypeParamAssignability.ts === function f1(o: T) { ->f1 : (o: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f1 : (o: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >o : T > : ^ @@ -53,16 +53,16 @@ function f3>(o: T) { } function user(t: T) { ->user : (t: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>user : (t: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ f1(t); >f1(t) : void > : ^^^^ ->f1 : (o: T_1) => void -> : ^^^^^^ ^^ ^^^^^^^^^ +>f1 : (o: T_1) => void +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >t : T > : ^ diff --git a/tests/baselines/reference/genericWithNoConstraintComparableWithCurlyCurly.types b/tests/baselines/reference/genericWithNoConstraintComparableWithCurlyCurly.types index c2cc899e72e1c..bfc0bffe1bc32 100644 --- a/tests/baselines/reference/genericWithNoConstraintComparableWithCurlyCurly.types +++ b/tests/baselines/reference/genericWithNoConstraintComparableWithCurlyCurly.types @@ -2,8 +2,8 @@ === genericWithNoConstraintComparableWithCurlyCurly.ts === function foo() { ->foo : () => void -> : ^ ^^^^^^^^^^^ +>foo : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ let x = {}; >x : {} diff --git a/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types b/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types index 6f760d214037e..0e217c20f4e57 100644 --- a/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types +++ b/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types @@ -2,8 +2,8 @@ === homomorphicMappedTypeIntersectionAssignability.ts === function f( ->f : (a: { weak?: string; } & Readonly & { name: "ok"; }, b: Readonly, c: Readonly & { name: string; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f : (a: { weak?: string; } & Readonly & { name: "ok"; }, b: Readonly, c: Readonly & { name: string; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ a: { weak?: string } & Readonly & { name: "ok" }, >a : { weak?: string; } & Readonly & { name: "ok"; } diff --git a/tests/baselines/reference/inKeywordAndUnknown.types b/tests/baselines/reference/inKeywordAndUnknown.types index 3b18bfedcabd5..6f4976a2a5a01 100644 --- a/tests/baselines/reference/inKeywordAndUnknown.types +++ b/tests/baselines/reference/inKeywordAndUnknown.types @@ -121,8 +121,8 @@ function f1(x: unknown) { } function f2(x: T) { ->f2 : (x: T) => x is T & Object & Record<"a", unknown> -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2 : (x: T) => x is T & Object & Record<"a", unknown> +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -194,8 +194,8 @@ function f4(x: T) { } function f5(x: T & {}) { ->f5 : (x: T & {}) => x is T & Object & Record<"a", unknown> -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f5 : (x: T & {}) => x is T & Object & Record<"a", unknown> +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T & {} > : ^^^^^^ diff --git a/tests/baselines/reference/inKeywordTypeguard(strict=true).errors.txt b/tests/baselines/reference/inKeywordTypeguard(strict=true).errors.txt index 7b998070848b9..60a904ae5cf23 100644 --- a/tests/baselines/reference/inKeywordTypeguard(strict=true).errors.txt +++ b/tests/baselines/reference/inKeywordTypeguard(strict=true).errors.txt @@ -278,7 +278,6 @@ inKeywordTypeguard.ts(186,21): error TS2638: Type 'NonNullable' may represent if ("a" in x) { ~ !!! error TS2322: Type 'T' is not assignable to type 'object'. -!!! related TS2208 inKeywordTypeguard.ts:182:13: This type parameter might need an `extends object` constraint. x.a; } if (x && "a" in x) { diff --git a/tests/baselines/reference/inKeywordTypeguard(strict=true).types b/tests/baselines/reference/inKeywordTypeguard(strict=true).types index 118e1c698a636..65df50837dae4 100644 --- a/tests/baselines/reference/inKeywordTypeguard(strict=true).types +++ b/tests/baselines/reference/inKeywordTypeguard(strict=true).types @@ -909,8 +909,8 @@ function f2(x: object) { } function f3(x: T) { ->f3 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f3 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -1592,8 +1592,8 @@ function f16(x: typeof globalThis, y: Window & typeof globalThis) { // Repro from #50639 function foo(value: A) { ->foo : (value: A) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>foo : (value: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >value : A > : ^ diff --git a/tests/baselines/reference/indexSignatureAndMappedType.errors.txt b/tests/baselines/reference/indexSignatureAndMappedType.errors.txt index fc9c4e6286ffd..4a73f8a66ccae 100644 --- a/tests/baselines/reference/indexSignatureAndMappedType.errors.txt +++ b/tests/baselines/reference/indexSignatureAndMappedType.errors.txt @@ -27,7 +27,6 @@ indexSignatureAndMappedType.ts(16,5): error TS2322: Type '{ [key: string]: T; }' !!! error TS2322: Type 'Record' is not assignable to type '{ [key: string]: T; }'. !!! error TS2322: Type 'U' is not assignable to type 'T'. !!! error TS2322: 'T' could be instantiated with an arbitrary type which could be unrelated to 'U'. -!!! related TS2208 indexSignatureAndMappedType.ts:14:16: This type parameter might need an `extends T` constraint. y = x; // Error ~ !!! error TS2322: Type '{ [key: string]: T; }' is not assignable to type 'Record'. diff --git a/tests/baselines/reference/indexSignatureAndMappedType.types b/tests/baselines/reference/indexSignatureAndMappedType.types index 2d2a82d3e2d8c..a7351d99d1ed4 100644 --- a/tests/baselines/reference/indexSignatureAndMappedType.types +++ b/tests/baselines/reference/indexSignatureAndMappedType.types @@ -5,8 +5,8 @@ // { [key: string]: Y } if X is related to Y. function f1(x: { [key: string]: T }, y: Record) { ->f1 : (x: { [key: string]: T; }, y: Record) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: { [key: string]: T; }, y: Record) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -32,8 +32,8 @@ function f1(x: { [key: string]: T }, y: Record) { } function f2(x: { [key: string]: T }, y: Record) { ->f2 : (x: { [key: string]: T; }, y: Record) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f2 : (x: { [key: string]: T; }, y: Record) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -59,8 +59,8 @@ function f2(x: { [key: string]: T }, y: Record) { } function f3(x: { [key: string]: T }, y: Record) { ->f3 : (x: { [key: string]: T; }, y: Record) => void -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (x: { [key: string]: T; }, y: Record) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string diff --git a/tests/baselines/reference/indexSignatures1.types b/tests/baselines/reference/indexSignatures1.types index f33d4ebdf16eb..fb842789132eb 100644 --- a/tests/baselines/reference/indexSignatures1.types +++ b/tests/baselines/reference/indexSignatures1.types @@ -1326,8 +1326,8 @@ const directive = Symbol('directive'); > : ^^^^^^^^^^^ declare function foo(options: { [x in string]: (arg: TArg) => TRet } & { [directive]?: TDir }): void; ->foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir; } > : ^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ >arg : TArg @@ -1342,8 +1342,8 @@ let case1 = foo({ > : ^^^^ >foo({ [directive]: (x: string) => 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,}) : void > : ^^^^ ->foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ [directive]: (x: string) => 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,} : { [directive]: (x: string) => "str"; addOne: (x: number) => number; double: (x: number) => number; } > : ^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ @@ -1394,8 +1394,8 @@ let case2 = foo({ > : ^^^^ >foo({ addOne: (x: number) => x + 1, double: (x: number) => x + x, [directive]: (x: string) => 'str',}) : void > : ^^^^ ->foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ addOne: (x: number) => x + 1, double: (x: number) => x + x, [directive]: (x: string) => 'str',} : { addOne: (x: number) => number; double: (x: number) => number; [directive]: (x: string) => "str"; } > : ^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ @@ -1446,8 +1446,8 @@ let case3 = foo({ > : ^^^^ >foo({ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,}) : void > : ^^^^ ->foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,} : { [directive]: string; addOne: (x: number) => number; double: (x: number) => number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/indexedAccessAndNullableNarrowing.types b/tests/baselines/reference/indexedAccessAndNullableNarrowing.types index b2cd3aae039cf..3c247d8c9c46e 100644 --- a/tests/baselines/reference/indexedAccessAndNullableNarrowing.types +++ b/tests/baselines/reference/indexedAccessAndNullableNarrowing.types @@ -60,8 +60,8 @@ function f2, K extends keyof T>(x: T[K] | null) { } function f3(t: T[K], p1: Partial[K] & {}, p2: Partial[K] & ({} | null)) { ->f3 : (t: T[K], p1: Partial[K] & {}, p2: Partial[K] & ({} | null)) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (t: T[K], p1: Partial[K] & {}, p2: Partial[K] & ({} | null)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T[K] > : ^^^^ >p1 : Partial[K] & {} diff --git a/tests/baselines/reference/indexedAccessNormalization.types b/tests/baselines/reference/indexedAccessNormalization.types index 7d373821593d1..d98ea308f4a13 100644 --- a/tests/baselines/reference/indexedAccessNormalization.types +++ b/tests/baselines/reference/indexedAccessNormalization.types @@ -15,8 +15,8 @@ type MyMap = { } declare function g(value?: T): void; ->g : (value?: T) => void -> : ^ ^^ ^^^ ^^^^^ +>g : (value?: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >value : T | undefined > : ^^^^^^^^^^^^^ @@ -41,8 +41,8 @@ function f1(mymap: MyMap, k: keyof M) { g(elemofM); >g(elemofM) : void > : ^^^^ ->g : (value?: T) => void -> : ^ ^^ ^^^ ^^^^^ +>g : (value?: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >elemofM : MyMap[keyof M] > : ^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/indexedAccessTypeConstraints.types b/tests/baselines/reference/indexedAccessTypeConstraints.types index 17b5fb66dd175..c4942f0f48ef4 100644 --- a/tests/baselines/reference/indexedAccessTypeConstraints.types +++ b/tests/baselines/reference/indexedAccessTypeConstraints.types @@ -106,8 +106,8 @@ export class Bar> extends Parent { // Repro from #14557 function foo(x: C, y: T['content']) { ->foo : (x: C, y: T["content"]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>foo : (x: C, y: T["content"]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >content : C > : ^ >x : C diff --git a/tests/baselines/reference/indexingTypesWithNever.types b/tests/baselines/reference/indexingTypesWithNever.types index 2ee4cf8e349a1..daa9c0521c948 100644 --- a/tests/baselines/reference/indexingTypesWithNever.types +++ b/tests/baselines/reference/indexingTypesWithNever.types @@ -30,8 +30,8 @@ type Result2 = EmptyObj[keyof EmptyObj]; > : ^^^^^ declare function genericFn1(obj: T): T[never]; ->genericFn1 : (obj: T) => T[never] -> : ^ ^^ ^^ ^^^^^ +>genericFn1 : (obj: T) => T[never] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ @@ -41,8 +41,8 @@ const result3 = genericFn1({ c: "ctest", d: "dtest" }); > : ^^^^^ >genericFn1({ c: "ctest", d: "dtest" }) : never > : ^^^^^ ->genericFn1 : (obj: T) => T[never] -> : ^ ^^ ^^ ^^^^^ +>genericFn1 : (obj: T) => T[never] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ c: "ctest", d: "dtest" } : { c: string; d: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >c : string diff --git a/tests/baselines/reference/inferFromBindingPattern.types b/tests/baselines/reference/inferFromBindingPattern.types index 0c1ba7f3b83aa..9e96c24e9ec68 100644 --- a/tests/baselines/reference/inferFromBindingPattern.types +++ b/tests/baselines/reference/inferFromBindingPattern.types @@ -44,8 +44,8 @@ let { x: x3 } = f3(); // string // Repro from #30379 function foo(): [T] { ->foo : () => [T] -> : ^ ^^^^^^^^^^^^^^^^ +>foo : () => [T] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return [42 as any] >[42 as any] : [any] @@ -59,8 +59,8 @@ const [x] = foo(); // [number] > : ^^^^^^ >foo() : [number] > : ^^^^^^^^ ->foo : () => [T] -> : ^ ^^^^^^^^^^^^^^^^ +>foo : () => [T] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Repro from #35291 @@ -87,8 +87,8 @@ interface Person { } declare function selectJohn(props?: SelectProps): SelectResult; ->selectJohn : (props?: SelectProps) => SelectResult -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >props : SelectProps | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -97,8 +97,8 @@ const [person] = selectJohn(); > : ^^^^^^ >selectJohn() : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->selectJohn : (props?: SelectProps) => SelectResult -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ const [any, whatever] = selectJohn(); >any : Person @@ -107,16 +107,16 @@ const [any, whatever] = selectJohn(); > : ^^^^^^ >selectJohn() : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->selectJohn : (props?: SelectProps) => SelectResult -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ const john = selectJohn(); >john : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >selectJohn() : SelectResult > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->selectJohn : (props?: SelectProps) => SelectResult -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>selectJohn : (props?: SelectProps) => SelectResult +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ const [personAgain, nufinspecial] = john; >personAgain : Person @@ -129,14 +129,14 @@ const [personAgain, nufinspecial] = john; // Repro from #35291 declare function makeTuple(arg: T1): [T1]; ->makeTuple : (arg: T1) => [T1] -> : ^ ^^ ^^ ^^^^^ +>makeTuple : (arg: T1) => [T1] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : T1 > : ^^ declare function stringy(arg?: T): T; ->stringy : (arg?: T) => T -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>stringy : (arg?: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >arg : T | undefined > : ^^^^^^^^^^^^^ @@ -145,22 +145,22 @@ const isStringTuple = makeTuple(stringy()); // [string] > : ^^^^^^^^ >makeTuple(stringy()) : [string] > : ^^^^^^^^ ->makeTuple : (arg: T1) => [T1] -> : ^ ^^ ^^ ^^^^^ +>makeTuple : (arg: T1) => [T1] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >stringy() : string > : ^^^^^^ ->stringy : (arg?: T) => T -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>stringy : (arg?: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ const [isAny] = makeTuple(stringy()); // [string] >isAny : string > : ^^^^^^ >makeTuple(stringy()) : [string] > : ^^^^^^^^ ->makeTuple : (arg: T1) => [T1] -> : ^ ^^ ^^ ^^^^^ +>makeTuple : (arg: T1) => [T1] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >stringy() : string > : ^^^^^^ ->stringy : (arg?: T) => T -> : ^ ^^^^^^^^^^^ ^^^ ^^^^^ +>stringy : (arg?: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ diff --git a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types index c4a3eace14466..d04bc18566f34 100644 --- a/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types +++ b/tests/baselines/reference/inferFromGenericFunctionReturnTypes3.types @@ -12,12 +12,12 @@ function truePromise(): Promise { return Promise.resolve(true); >Promise.resolve(true) : Promise > : ^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >true : true > : ^^^^ } @@ -29,8 +29,8 @@ interface Wrap { } function wrap(value: T): Wrap { ->wrap : (value: T) => Wrap -> : ^ ^^ ^^ ^^^^^ +>wrap : (value: T) => Wrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -48,8 +48,8 @@ function wrappedFoo(): Wrap<'foo'> { return wrap('foo'); >wrap('foo') : Wrap<"foo"> > : ^^^^^^^^^^^ ->wrap : (value: T) => Wrap -> : ^ ^^ ^^ ^^^^^ +>wrap : (value: T) => Wrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'foo' : "foo" > : ^^^^^ } @@ -116,8 +116,8 @@ function wrappedBar(): Wrap<'bar'> { return wrap(value); >wrap(value) : Wrap<"bar"> > : ^^^^^^^^^^^ ->wrap : (value: T) => Wrap -> : ^ ^^ ^^ ^^^^^ +>wrap : (value: T) => Wrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : "bar" > : ^^^^^ } @@ -135,8 +135,8 @@ function wrappedBaz(): Wrap<'baz'> { return wrap(value); >wrap(value) : Wrap<"baz"> > : ^^^^^^^^^^^ ->wrap : (value: T) => Wrap -> : ^ ^^ ^^ ^^^^^ +>wrap : (value: T) => Wrap +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : "baz" > : ^^^^^ } @@ -162,8 +162,8 @@ a = [1, 2, 3, 4, 5].map(v => ({ type: 'folder' })); > : ^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4, 5].map(v => ({ type: 'folder' })) : { type: "folder"; }[] > : ^^^^^^^^^^^^^^^^^^^^^ ->[1, 2, 3, 4, 5].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2, 3, 4, 5].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4, 5] : number[] > : ^^^^^^^^ >1 : 1 @@ -176,8 +176,8 @@ a = [1, 2, 3, 4, 5].map(v => ({ type: 'folder' })); > : ^ >5 : 5 > : ^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >v => ({ type: 'folder' }) : (v: number) => { type: "folder"; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >v : number @@ -210,12 +210,12 @@ let mappedArr: Array<[number, number]> = arr.map(([x, y]) => { > : ^^^^^^^^^^^^^^^^^^ >arr.map(([x, y]) => { return [x, y];}) : [number, number][] > : ^^^^^^^^^^^^^^^^^^ ->arr.map : (callbackfn: (value: [number, number], index: number, array: [number, number][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>arr.map : (callbackfn: (value: [number, number], index: number, array: [number, number][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr : [number, number][] > : ^^^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: [number, number], index: number, array: [number, number][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: [number, number], index: number, array: [number, number][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >([x, y]) => { return [x, y];} : ([x, y]: [number, number]) => [number, number] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -299,12 +299,12 @@ function bug(): Diagnostic[] { return values.map((value) => { >values.map((value) => { return { severity: DiagnosticSeverity.Error, message: 'message' } }) : { severity: 1; message: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->values.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>values.map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >values : any[] > : ^^^^^ ->map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: any, index: number, array: any[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(value) => { return { severity: DiagnosticSeverity.Error, message: 'message' } } : (value: any) => { severity: 1; message: string; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : any @@ -348,8 +348,8 @@ function objectToMap(obj: any) { > : ^^^^^^^^^^^^^^ >Object.keys(obj).map(key => [key, obj[key]]) : [string, any][] > : ^^^^^^^^^^^^^^^ ->Object.keys(obj).map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>Object.keys(obj).map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >Object.keys(obj) : string[] > : ^^^^^^^^ >Object.keys : { (o: object): string[]; (o: {}): string[]; } @@ -360,8 +360,8 @@ function objectToMap(obj: any) { > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >obj : any > : ^^^ ->map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >key => [key, obj[key]] : (key: string) => [string, any] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -406,14 +406,14 @@ function createPerson(): Person { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[1].map(() => ({ __typename: 'PhoneNumber' })) : { __typename: "PhoneNumber"; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1] : number[] > : ^^^^^^^^ >1 : 1 > : ^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >() => ({ __typename: 'PhoneNumber' }) : () => { __typename: "PhoneNumber"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({ __typename: 'PhoneNumber' }) : { __typename: "PhoneNumber"; } @@ -440,8 +440,8 @@ type Box = { value: T }; > : ^ declare function box(value: T): Box; ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -464,8 +464,8 @@ let zz: Box = box({ type: 'draw' }); > : ^^^^^^^^^^^^^^^^^ >box({ type: 'draw' }) : Box<{ type: "draw"; }> > : ^^^^^^^^^^^^^^^^^^^^^^ ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ type: 'draw' } : { type: "draw"; } > : ^^^^^^^^^^^^^^^^^ >type : "draw" @@ -482,8 +482,8 @@ let yy: Box = box('draw'); > : ^^^^^^^^^^^^ >box('draw') : Box<"draw"> > : ^^^^^^^^^^^ ->box : (value: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (value: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'draw' : "draw" > : ^^^^^^ @@ -499,8 +499,8 @@ interface OK { > : ^ } export function ok(value: T): OK { ->ok : (value: T) => OK -> : ^ ^^ ^^ ^^^^^ +>ok : (value: T) => OK +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -528,8 +528,8 @@ let result: OK<[string, number]> = ok(["hello", 12]); > : ^^^^^^^^^^^^^^^^^^^^ >ok(["hello", 12]) : OK<[string, number]> > : ^^^^^^^^^^^^^^^^^^^^ ->ok : (value: T) => OK -> : ^ ^^ ^^ ^^^^^ +>ok : (value: T) => OK +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >["hello", 12] : [string, number] > : ^^^^^^^^^^^^^^^^ >"hello" : "hello" @@ -554,16 +554,16 @@ const a3: I[] = ['a', 'b'].map(name => { > : ^^^ >['a', 'b'].map(name => { return { code: 'mapped', name, }}) : { code: "mapped"; name: string; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->['a', 'b'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>['a', 'b'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >['a', 'b'] : string[] > : ^^^^^^^^ >'a' : "a" > : ^^^ >'b' : "b" > : ^^^ ->map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >name => { return { code: 'mapped', name, }} : (name: string) => { code: "mapped"; name: string; } > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string @@ -618,12 +618,12 @@ const f1: F = () => { return Promise.all([ >Promise.all([ { name: "David Gomes", age: 23, position: "GOALKEEPER", }, { name: "Cristiano Ronaldo", age: 33, position: "STRIKER", } ]) : Promise<({ name: string; age: number; position: "GOALKEEPER"; } | { name: string; age: number; position: "STRIKER"; })[]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >[ { name: "David Gomes", age: 23, position: "GOALKEEPER", }, { name: "Cristiano Ronaldo", age: 33, position: "STRIKER", } ] : ({ name: string; age: number; position: "GOALKEEPER"; } | { name: string; age: number; position: "STRIKER"; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ { @@ -676,8 +676,8 @@ const f1: F = () => { // Breaking change repros from #29478 declare function foldLeft(z: U, f: (acc: U, t: boolean) => U): U; ->foldLeft : (z: U, f: (acc: U, t: boolean) => U) => U -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foldLeft : (z: U, f: (acc: U, t: boolean) => U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >z : U > : ^ >f : (acc: U, t: boolean) => U @@ -692,8 +692,8 @@ let res: boolean = foldLeft(true, (acc, t) => acc && t); // Error > : ^^^^^^^ >foldLeft(true, (acc, t) => acc && t) : boolean > : ^^^^^^^ ->foldLeft : (z: U, f: (acc: U, t: boolean) => U) => U -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>foldLeft : (z: U, f: (acc: U, t: boolean) => U) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >true : true > : ^^^^ >(acc, t) => acc && t : (acc: boolean, t: boolean) => boolean @@ -724,8 +724,8 @@ type Foo = { state: State } > : ^^^^^ declare function bar(f: () => T[]): T[]; ->bar : (f: () => T[]) => T[] -> : ^ ^^ ^^ ^^^^^ +>bar : (f: () => T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : () => T[] > : ^^^^^^ @@ -734,8 +734,8 @@ let x: Foo[] = bar(() => !!true ? [{ state: State.A }] : [{ state: State.B }]); > : ^^^^^ >bar(() => !!true ? [{ state: State.A }] : [{ state: State.B }]) : { state: State.A; }[] > : ^^^^^^^^^^^^^^^^^^^^^ ->bar : (f: () => T[]) => T[] -> : ^ ^^ ^^ ^^^^^ +>bar : (f: () => T[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => !!true ? [{ state: State.A }] : [{ state: State.B }] : () => { state: State.A; }[] | { state: State.B; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >!!true ? [{ state: State.A }] : [{ state: State.B }] : { state: State.A; }[] | { state: State.B; }[] @@ -801,8 +801,8 @@ class ClassWithConvert { } function fn(arg: ClassWithConvert, f: () => ClassWithConvert) { } ->fn : (arg: ClassWithConvert, f: () => ClassWithConvert) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>fn : (arg: ClassWithConvert, f: () => ClassWithConvert) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >arg : ClassWithConvert > : ^^^^^^^^^^^^^^^^^^^ >f : () => ClassWithConvert @@ -811,8 +811,8 @@ function fn(arg: ClassWithConvert, f: () => ClassWithConvert) { } fn(new ClassWithConvert(Enum.A), () => new ClassWithConvert(Enum.A)); >fn(new ClassWithConvert(Enum.A), () => new ClassWithConvert(Enum.A)) : void > : ^^^^ ->fn : (arg: ClassWithConvert, f: () => ClassWithConvert) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>fn : (arg: ClassWithConvert, f: () => ClassWithConvert) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >new ClassWithConvert(Enum.A) : ClassWithConvert > : ^^^^^^^^^^^^^^^^^^^^^^ >ClassWithConvert : typeof ClassWithConvert @@ -843,14 +843,14 @@ type Func = (x: T) => T; > : ^ declare function makeFoo(x: T): Func; ->makeFoo : (x: T) => Func -> : ^ ^^ ^^ ^^^^^ +>makeFoo : (x: T) => Func +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function baz(x: Func, y: Func): void; ->baz : (x: Func, y: Func) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>baz : (x: Func, y: Func) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : Func > : ^^^^^^^ >y : Func @@ -859,12 +859,12 @@ declare function baz(x: Func, y: Func): void; baz(makeFoo(Enum.A), makeFoo(Enum.A)); >baz(makeFoo(Enum.A), makeFoo(Enum.A)) : void > : ^^^^ ->baz : (x: Func, y: Func) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>baz : (x: Func, y: Func) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >makeFoo(Enum.A) : Func > : ^^^^^^^^^^ ->makeFoo : (x: T) => Func -> : ^ ^^ ^^ ^^^^^ +>makeFoo : (x: T) => Func +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Enum.A : Enum.A > : ^^^^^^ >Enum : typeof Enum @@ -873,8 +873,8 @@ baz(makeFoo(Enum.A), makeFoo(Enum.A)); > : ^^^^^^ >makeFoo(Enum.A) : Func > : ^^^^^^^^^^ ->makeFoo : (x: T) => Func -> : ^ ^^ ^^ ^^^^^ +>makeFoo : (x: T) => Func +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Enum.A : Enum.A > : ^^^^^^ >Enum : typeof Enum diff --git a/tests/baselines/reference/inferFromNestedSameShapeTuple.types b/tests/baselines/reference/inferFromNestedSameShapeTuple.types index 423bf38a71dd9..62c273b1d000c 100644 --- a/tests/baselines/reference/inferFromNestedSameShapeTuple.types +++ b/tests/baselines/reference/inferFromNestedSameShapeTuple.types @@ -27,8 +27,8 @@ type Recursive = { } declare function getIds(items: readonly Recursive[]): Id[]; ->getIds : (items: readonly Recursive[]) => Id[] -> : ^ ^^ ^^ ^^^^^ +>getIds : (items: readonly Recursive[]) => Id[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >items : readonly Recursive[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -78,8 +78,8 @@ const foo = getIds(items) > : ^^^^^^^^^^^^^ >getIds(items) : ("a" | "b")[] > : ^^^^^^^^^^^^^ ->getIds : (items: readonly Recursive[]) => Id[] -> : ^ ^^ ^^ ^^^^^ +>getIds : (items: readonly Recursive[]) => Id[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >items : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -89,8 +89,8 @@ const foo2 = getIds([{ > : ^^^^^^^^^^^^^ >getIds([{ id: 'a', children: [{ id: 'b', children: [] }]}] as const) : ("a" | "b")[] > : ^^^^^^^^^^^^^ ->getIds : (items: readonly Recursive[]) => Id[] -> : ^ ^^ ^^ ^^^^^ +>getIds : (items: readonly Recursive[]) => Id[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[{ id: 'a', children: [{ id: 'b', children: [] }]}] as const : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[{ id: 'a', children: [{ id: 'b', children: [] }]}] : readonly [{ readonly id: "a"; readonly children: readonly [{ readonly id: "b"; readonly children: readonly []; }]; }] @@ -142,8 +142,8 @@ type T2 = [42, T2<{ x: T }>]; > : ^ function qq(x: T1, y: T2) { ->qq : (x: T1, y: T2) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>qq : (x: T1, y: T2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T1 > : ^^^^^ >y : T2 diff --git a/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types b/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types index 08a2b11f7301e..f9217e2d9d7ac 100644 --- a/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types +++ b/tests/baselines/reference/inferPropertyWithContextSensitiveReturnStatement.types @@ -4,8 +4,8 @@ // repro #50687 declare function repro(config: { ->repro : (config: { params: T; callback: () => (params: T) => number; }) => void -> : ^ ^^ ^^ ^^^^^ +>repro : (config: { params: T; callback: () => (params: T) => number; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >config : { params: T; callback: () => (params: T) => number; } > : ^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ @@ -24,8 +24,8 @@ declare function repro(config: { repro({ >repro({ params: 1, callback: () => { return a => a + 1 },}) : void > : ^^^^ ->repro : (config: { params: T; callback: () => (params: T) => number; }) => void -> : ^ ^^ ^^ ^^^^^ +>repro : (config: { params: T; callback: () => (params: T) => number; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ params: 1, callback: () => { return a => a + 1 },} : { params: number; callback: () => (a: number) => number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/inferTypePredicates.types b/tests/baselines/reference/inferTypePredicates.types index e604e593a0e2f..80de1a2f38207 100644 --- a/tests/baselines/reference/inferTypePredicates.types +++ b/tests/baselines/reference/inferTypePredicates.types @@ -70,8 +70,8 @@ const evenSquaresInline: number[] = // should error > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ ->[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -84,8 +84,8 @@ const evenSquaresInline: number[] = // should error > : ^ .map(x => x % 2 === 0 ? x * x : null) ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x % 2 === 0 ? x * x : null : (x: number) => number | null > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -148,8 +148,8 @@ const evenSquares: number[] = // should error > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ ->[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -162,8 +162,8 @@ const evenSquares: number[] = // should error > : ^ .map(x => x % 2 === 0 ? x * x : null) ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x % 2 === 0 ? x * x : null : (x: number) => number | null > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -204,8 +204,8 @@ const evenSquaresNonNull: number[] = // should ok > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >[1, 2, 3, 4] .map(x => x % 2 === 0 ? x * x : null) : (number | null)[] > : ^^^^^^^^^^^^^^^^^ ->[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2, 3, 4] .map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -218,8 +218,8 @@ const evenSquaresNonNull: number[] = // should ok > : ^ .map(x => x % 2 === 0 ? x * x : null) ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x % 2 === 0 ? x * x : null : (x: number) => number | null > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -289,8 +289,8 @@ function isNonNullVar(x: number | null) { } function isNonNullGeneric(x: T) { ->isNonNullGeneric : (x: T) => x is T & ({} | undefined) -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>isNonNullGeneric : (x: T) => x is T & ({} | undefined) +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -356,22 +356,22 @@ const result = myArray > : ^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) .map((arr) => arr // should error .filter((obj) => obj && obj.data) .map(obj => JSON.parse(obj.data)) // should error ) : any[][] > : ^^^^^^^ ->myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) .map : (callbackfn: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) .map : (callbackfn: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => arr && arr.length) : (MyObj[] | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) .filter : { (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => unknown, thisArg?: any): (MyObj[] | undefined)[]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) : (MyObj[] | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ ->myArray .map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>myArray .map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray : MyArray > : ^^^^^^^ .map((arr) => arr.list) ->map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr.list : (arr: { list?: MyObj[]; }) => MyObj[] | undefined > : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : { list?: MyObj[]; } @@ -402,16 +402,16 @@ const result = myArray > : ^^^^^^ .map((arr) => arr // should error ->map : (callbackfn: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: MyObj[] | undefined, index: number, array: (MyObj[] | undefined)[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr // should error .filter((obj) => obj && obj.data) .map(obj => JSON.parse(obj.data)) : (arr: MyObj[] | undefined) => any[] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] | undefined > : ^^^^^^^^^^^^^^^^^^^ >arr // should error .filter((obj) => obj && obj.data) .map(obj => JSON.parse(obj.data)) : any[] > : ^^^^^ ->arr // should error .filter((obj) => obj && obj.data) .map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>arr // should error .filter((obj) => obj && obj.data) .map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr // should error .filter((obj) => obj && obj.data) : MyObj[] > : ^^^^^^^ >arr // should error .filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } @@ -438,8 +438,8 @@ const result = myArray > : ^^^^^^^^^^^^^^^^^^ .map(obj => JSON.parse(obj.data)) // should error ->map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >obj => JSON.parse(obj.data) : (obj: MyObj) => any > : ^ ^^^^^^^^^^^^^^^ >obj : MyObj @@ -466,8 +466,8 @@ const result2 = myArray > : ^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) .map((arr) => arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map(obj => JSON.parse(obj.data)) ) : any[][] > : ^^^^^^^ ->myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) .map : (callbackfn: (value: MyObj[], index: number, array: MyObj[][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) .map : (callbackfn: (value: MyObj[], index: number, array: MyObj[][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter(arr => arr.length) : MyObj[][] > : ^^^^^^^^^ >myArray .map((arr) => arr.list) .filter((arr) => !!arr) .filter : { (predicate: (value: MyObj[], index: number, array: MyObj[][]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj[], index: number, array: MyObj[][]) => unknown, thisArg?: any): MyObj[][]; } @@ -478,14 +478,14 @@ const result2 = myArray > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >myArray .map((arr) => arr.list) : (MyObj[] | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ ->myArray .map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>myArray .map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >myArray : MyArray > : ^^^^^^^ .map((arr) => arr.list) ->map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: { list?: MyObj[]; }, index: number, array: { list?: MyObj[]; }[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr.list : (arr: { list?: MyObj[]; }) => MyObj[] | undefined > : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arr : { list?: MyObj[]; } @@ -526,16 +526,16 @@ const result2 = myArray > : ^^^^^^ .map((arr) => arr // should ok ->map : (callbackfn: (value: MyObj[], index: number, array: MyObj[][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: MyObj[], index: number, array: MyObj[][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(arr) => arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map(obj => JSON.parse(obj.data)) : (arr: MyObj[]) => any[] > : ^ ^^^^^^^^^^^^^^^^^^^ >arr : MyObj[] > : ^^^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map(obj => JSON.parse(obj.data)) : any[] > : ^^^^^ ->arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) .map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter(obj => !!obj.data) : MyObj[] > : ^^^^^^^ >arr // should ok .filter((obj) => obj) // inferring a guard here would require https://github.com/microsoft/TypeScript/issues/42384 .filter : { (predicate: (value: MyObj, index: number, array: MyObj[]) => value is S, thisArg?: any): S[]; (predicate: (value: MyObj, index: number, array: MyObj[]) => unknown, thisArg?: any): MyObj[]; } @@ -577,8 +577,8 @@ const result2 = myArray > : ^^^^^^^^^^^^^^^^^^ .map(obj => JSON.parse(obj.data)) ->map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: MyObj, index: number, array: MyObj[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >obj => JSON.parse(obj.data) : (obj: MyObj) => any > : ^ ^^^^^^^^^^^^^^^ >obj : MyObj diff --git a/tests/baselines/reference/inferTypes1.errors.txt b/tests/baselines/reference/inferTypes1.errors.txt index a5d4c73aaa388..1a9a1d84bf358 100644 --- a/tests/baselines/reference/inferTypes1.errors.txt +++ b/tests/baselines/reference/inferTypes1.errors.txt @@ -206,7 +206,6 @@ inferTypes1.ts(153,40): error TS2322: Type 'T' is not assignable to type 'string type B = string extends T ? { [P in T]: void; } : T; // Error ~ !!! error TS2322: Type 'T' is not assignable to type 'string | number | symbol'. -!!! related TS2208 inferTypes1.ts:153:8: This type parameter might need an `extends string | number | symbol` constraint. // Repro from #22302 diff --git a/tests/baselines/reference/inferTypes2.js b/tests/baselines/reference/inferTypes2.js index fce1586e9d103..7613d0847aca0 100644 --- a/tests/baselines/reference/inferTypes2.js +++ b/tests/baselines/reference/inferTypes2.js @@ -50,5 +50,5 @@ export declare function foo2(obj: T): T extends { [K in keyof BadNested]: BadNested[K]; } ? P : never; export declare function bar2(obj: T): T extends { - x: infer P extends number ? infer P : string; + x: infer P extends unknown extends number ? infer P extends unknown : string; } ? P : never; diff --git a/tests/baselines/reference/inferTypes2.types b/tests/baselines/reference/inferTypes2.types index 546455e65ed0e..21ae797348e12 100644 --- a/tests/baselines/reference/inferTypes2.types +++ b/tests/baselines/reference/inferTypes2.types @@ -4,22 +4,22 @@ // Repros from #22755 export declare function foo(obj: T): T extends () => infer P ? P : never; ->foo : (obj: T) => T extends () => infer P ? P : never -> : ^ ^^ ^^ ^^^^^ +>foo : (obj: T) => T extends () => infer P ? P : never +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ export function bar(obj: T) { ->bar : (obj: T) => T extends () => infer P ? P : never -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>bar : (obj: T) => T extends () => infer P ? P : never +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >obj : T > : ^ return foo(obj); >foo(obj) : T extends () => infer P ? P : never > : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->foo : (obj: T_1) => T_1 extends () => infer P ? P : never -> : ^^^^^^ ^^ ^^^^^ +>foo : (obj: T_1) => T_1 extends () => infer P ? P : never +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ } @@ -31,22 +31,22 @@ export type BadNested = { x: T extends number ? T : string }; > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ export declare function foo2(obj: T): T extends { [K in keyof BadNested]: BadNested[K] } ? P : never; ->foo2 : (obj: T) => T extends { [K in keyof BadNested]: BadNested[K]; } ? P : never -> : ^ ^^ ^^ ^^^^^ +>foo2 : (obj: T) => T extends { [K in keyof BadNested]: BadNested[K]; } ? P : never +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ export function bar2(obj: T) { ->bar2 : (obj: T) => T extends { x: infer P extends number ? infer P : string; } ? P : never -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>bar2 : (obj: T) => T extends { x: infer P extends unknown extends number ? infer P extends unknown : string; } ? P : never +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T > : ^ return foo2(obj); ->foo2(obj) : T extends { x: infer P extends number ? infer P : string; } ? P : never -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->foo2 : (obj: T_1) => T_1 extends { [K in keyof BadNested]: BadNested[K]; } ? P : never -> : ^^^^^^ ^^ ^^^^^ +>foo2(obj) : T extends { x: infer P extends unknown extends number ? infer P extends unknown : string; } ? P : never +> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>foo2 : (obj: T_1) => T_1 extends { [K in keyof BadNested]: BadNested[K]; } ? P : never +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ } diff --git a/tests/baselines/reference/inferTypesWithExtends1.js b/tests/baselines/reference/inferTypesWithExtends1.js index 298199e4b9042..8d2068f12684f 100644 --- a/tests/baselines/reference/inferTypesWithExtends1.js +++ b/tests/baselines/reference/inferTypesWithExtends1.js @@ -294,7 +294,7 @@ type X21_T4 = X21<1 | 2, 2 | 3>; type X21_T5 = X21<1 | 2, 3>; type IfEquals = (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; declare const x1: () => (T extends infer U extends number ? 1 : 0); -declare function f1(): () => (T extends infer U extends number ? 1 : 0); +declare function f1(): () => (T extends infer U extends number ? 1 : 0); type ExpectNumber = T; declare const x2: () => (T extends ExpectNumber ? 1 : 0); -declare function f2(): () => (T extends ExpectNumber ? 1 : 0); +declare function f2(): () => (T extends ExpectNumber ? 1 : 0); diff --git a/tests/baselines/reference/inferTypesWithExtends1.types b/tests/baselines/reference/inferTypesWithExtends1.types index e24355d4ff35a..3ef7a4076064c 100644 --- a/tests/baselines/reference/inferTypesWithExtends1.types +++ b/tests/baselines/reference/inferTypesWithExtends1.types @@ -431,16 +431,16 @@ type IfEquals = (() => T extends X ? 1 : 2) extends () => T ex > : ^^^^^^^^^^^^^^^^^^^^ declare const x1: () => (T extends infer U extends number ? 1 : 0); ->x1 : () => (T extends infer U extends number ? 1 : 0) -> : ^ ^^^^^^^ +>x1 : () => (T extends infer U extends number ? 1 : 0) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ function f1() { ->f1 : () => () => (T extends infer U extends number ? 1 : 0) -> : ^^^^^^^ ^^^^^^^ +>f1 : () => () => (T extends infer U extends number ? 1 : 0) +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ return x1; ->x1 : () => (T extends infer U extends number ? 1 : 0) -> : ^ ^^^^^^^ +>x1 : () => (T extends infer U extends number ? 1 : 0) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ } type ExpectNumber = T; @@ -448,14 +448,14 @@ type ExpectNumber = T; > : ^ declare const x2: () => (T extends ExpectNumber ? 1 : 0); ->x2 : () => (T extends ExpectNumber ? 1 : 0) -> : ^ ^^^^^^^ +>x2 : () => (T extends ExpectNumber ? 1 : 0) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ function f2() { ->f2 : () => () => (T extends ExpectNumber ? 1 : 0) -> : ^^^^^^^ ^^^^^^^ +>f2 : () => () => (T extends ExpectNumber ? 1 : 0) +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ return x2; ->x2 : () => (T extends ExpectNumber ? 1 : 0) -> : ^ ^^^^^^^ +>x2 : () => (T extends ExpectNumber ? 1 : 0) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/inferenceAndHKTs.types b/tests/baselines/reference/inferenceAndHKTs.types index 62c063d89bd6c..b23795270f3c8 100644 --- a/tests/baselines/reference/inferenceAndHKTs.types +++ b/tests/baselines/reference/inferenceAndHKTs.types @@ -64,10 +64,10 @@ declare const a: T; > : ^^^^^^^^^ const x1 = map(typeClass); ->x1 : (a: T, f: (a: A) => B) => T -> : ^ ^^ ^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ->map(typeClass) : (a: T, f: (a: A) => B) => T -> : ^ ^^ ^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +>x1 : (a: T, f: (a: A) => B) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +>map(typeClass) : (a: T, f: (a: A) => B) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >map : (F: TypeClass) => (a: Apply, f: (a: A) => B) => Apply > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >typeClass : TypeClass @@ -78,8 +78,8 @@ const x2 = map(typeClass)(a, (_) => _); // T > : ^^^^^^^^^ >map(typeClass)(a, (_) => _) : T > : ^^^^^^^^^ ->map(typeClass) : (a: T, f: (a: A) => B) => T -> : ^ ^^ ^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ +>map(typeClass) : (a: T, f: (a: A) => B) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ >map : (F: TypeClass) => (a: Apply, f: (a: A) => B) => Apply > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >typeClass : TypeClass diff --git a/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types b/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types index 4cca9aa7ffa65..3e142041b0f2b 100644 --- a/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types +++ b/tests/baselines/reference/inferenceDoesNotAddUndefinedOrNull.types @@ -5,8 +5,8 @@ interface NodeArray extends ReadonlyArray {} interface Node { forEachChild(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined): T | undefined; ->forEachChild : (cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined) => T | undefined -> : ^ ^^ ^^ ^^ ^^^ ^^^^^ +>forEachChild : (cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray) => T | undefined) => T | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ >cbNode : (node: Node) => T | undefined > : ^ ^^ ^^^^^ >node : Node @@ -18,20 +18,20 @@ interface Node { } declare function toArray(value: T | T[]): T[]; ->toArray : { (value: T | T[]): T[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^^ ^^^ +>toArray : { (value: T | T[]): T[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : T | T[] > : ^^^^^^^ declare function toArray(value: T | readonly T[]): readonly T[]; ->toArray : { (value: T_1 | T_1[]): T_1[]; (value: T | readonly T[]): readonly T[]; } -> : ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>toArray : { (value: T_1 | T_1[]): T_1[]; (value: T | readonly T[]): readonly T[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : T | readonly T[] > : ^^^^^^^^^^^^^^^^ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | undefined): readonly T[] { ->flatMapChildren : (node: Node, cb: (child: Node) => readonly T[] | T | undefined) => readonly T[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>flatMapChildren : (node: Node, cb: (child: Node) => readonly T[] | T | undefined) => readonly T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >node : Node > : ^^^^ >cb : (child: Node) => readonly T[] | T | undefined @@ -48,12 +48,12 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | node.forEachChild(child => { >node.forEachChild(child => { const value = cb(child); if (value !== undefined) { result.push(...toArray(value)); } }) : void | undefined > : ^^^^^^^^^^^^^^^^ ->node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined -> : ^^^^^^ ^^ ^^ ^^^ ^^^^^ +>node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ >node : Node > : ^^^^ ->forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined -> : ^^^^^^ ^^ ^^ ^^^ ^^^^^ +>forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ >child => { const value = cb(child); if (value !== undefined) { result.push(...toArray(value)); } } : (child: Node) => void > : ^ ^^^^^^^^^^^^^^^ >child : Node @@ -90,8 +90,8 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | > : ^ >toArray(value) : readonly T[] > : ^^^^^^^^^^^^ ->toArray : { (value: T_1 | T_1[]): T_1[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } -> : ^^^^^^^^ ^^ ^^^ ^^^^^^^^ ^^ ^^^ ^^^ +>toArray : { (value: T_1 | T_1[]): T_1[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : readonly T[] | (T & ({} | null)) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -102,8 +102,8 @@ function flatMapChildren(node: Node, cb: (child: Node) => readonly T[] | T | } function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | null): readonly T[] { ->flatMapChildren2 : (node: Node, cb: (child: Node) => readonly T[] | T | null) => readonly T[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>flatMapChildren2 : (node: Node, cb: (child: Node) => readonly T[] | T | null) => readonly T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >node : Node > : ^^^^ >cb : (child: Node) => readonly T[] | T | null @@ -120,12 +120,12 @@ function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | node.forEachChild(child => { >node.forEachChild(child => { const value = cb(child); if (value !== null) { result.push(...toArray(value)); } }) : void | undefined > : ^^^^^^^^^^^^^^^^ ->node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined -> : ^^^^^^ ^^ ^^ ^^^ ^^^^^ +>node.forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ >node : Node > : ^^^^ ->forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined -> : ^^^^^^ ^^ ^^ ^^^ ^^^^^ +>forEachChild : (cbNode: (node: Node) => T_1 | undefined, cbNodeArray?: (nodes: NodeArray) => T_1 | undefined) => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^ >child => { const value = cb(child); if (value !== null) { result.push(...toArray(value)); } } : (child: Node) => void > : ^ ^^^^^^^^^^^^^^^ >child : Node @@ -160,8 +160,8 @@ function flatMapChildren2(node: Node, cb: (child: Node) => readonly T[] | T | > : ^ >toArray(value) : readonly T[] > : ^^^^^^^^^^^^ ->toArray : { (value: T_1 | T_1[]): T_1[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } -> : ^^^^^^^^ ^^ ^^^ ^^^^^^^^ ^^ ^^^ ^^^ +>toArray : { (value: T_1 | T_1[]): T_1[]; (value: T_1 | readonly T_1[]): readonly T_1[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >value : readonly T[] | (T & ({} | undefined)) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/inferenceFromIncompleteSource.types b/tests/baselines/reference/inferenceFromIncompleteSource.types index e634c003fdbde..89faadbd5fb32 100644 --- a/tests/baselines/reference/inferenceFromIncompleteSource.types +++ b/tests/baselines/reference/inferenceFromIncompleteSource.types @@ -18,16 +18,16 @@ interface ListProps { } declare const Component: (x: ListProps) => void; ->Component : (x: ListProps) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>Component : (x: ListProps) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >x : ListProps > : ^^^^^^^^^^^^^^^ Component({items: [{name:' string'}], itemKey: 'name' }); >Component({items: [{name:' string'}], itemKey: 'name' }) : void > : ^^^^ ->Component : (x: ListProps) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>Component : (x: ListProps) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{items: [{name:' string'}], itemKey: 'name' } : { items: { name: string; }[]; itemKey: "name"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >items : { name: string; }[] diff --git a/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types b/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types index a783ee1e541b5..0baf1e7a5302e 100644 --- a/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types +++ b/tests/baselines/reference/inferenceOfNullableObjectTypesWithCommonBase.types @@ -2,8 +2,8 @@ === inferenceOfNullableObjectTypesWithCommonBase.ts === function equal(a: T, b: T) { } ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >a : T > : ^ >b : T @@ -34,8 +34,8 @@ type D = { foo: string; bar: number } equal(v as B, v as undefined | D) >equal(v as B, v as undefined | D) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -48,8 +48,8 @@ equal(v as B, v as undefined | D) equal(v as undefined | D, v as B) >equal(v as undefined | D, v as B) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as undefined | D : D | undefined > : ^^^^^^^^^^^^^ >v : never @@ -62,8 +62,8 @@ equal(v as undefined | D, v as B) equal(v as B, v as undefined | D) >equal(v as B, v as undefined | D) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -76,8 +76,8 @@ equal(v as B, v as undefined | D) equal(v as undefined | D, v as B) >equal(v as undefined | D, v as B) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as undefined | D : D | undefined > : ^^^^^^^^^^^^^ >v : never @@ -90,8 +90,8 @@ equal(v as undefined | D, v as B) equal(v as B, v as undefined) >equal(v as B, v as undefined) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -104,8 +104,8 @@ equal(v as B, v as undefined) equal(v as undefined, v as B) >equal(v as undefined, v as B) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as undefined : undefined > : ^^^^^^^^^ >v : never @@ -118,8 +118,8 @@ equal(v as undefined, v as B) equal(v as B, v as D) >equal(v as B, v as D) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -132,8 +132,8 @@ equal(v as B, v as D) equal(v as D, v as B) >equal(v as D, v as B) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as D : D > : ^ >v : never @@ -146,8 +146,8 @@ equal(v as D, v as B) equal(v as B, v as B | undefined) >equal(v as B, v as B | undefined) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B : B > : ^ >v : never @@ -160,8 +160,8 @@ equal(v as B, v as B | undefined) equal(v as B | undefined, v as B) >equal(v as B | undefined, v as B) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as B | undefined : B | undefined > : ^^^^^^^^^^^^^ >v : never @@ -174,8 +174,8 @@ equal(v as B | undefined, v as B) equal(v as 'a' | undefined, v as 'b'); >equal(v as 'a' | undefined, v as 'b') : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' | undefined : "a" | undefined > : ^^^^^^^^^^^^^^^ >v : never @@ -188,8 +188,8 @@ equal(v as 'a' | undefined, v as 'b'); equal(v as 'a', v as 'b' | undefined); >equal(v as 'a', v as 'b' | undefined) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' : "a" > : ^^^ >v : never @@ -202,8 +202,8 @@ equal(v as 'a', v as 'b' | undefined); equal(v as 'a' | undefined, v as 'b' | null); >equal(v as 'a' | undefined, v as 'b' | null) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' | undefined : "a" | undefined > : ^^^^^^^^^^^^^^^ >v : never @@ -216,8 +216,8 @@ equal(v as 'a' | undefined, v as 'b' | null); equal(v as 'a' | null, v as 'b' | undefined); >equal(v as 'a' | null, v as 'b' | undefined) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as 'a' | null : "a" | null > : ^^^^^^^^^^ >v : never @@ -230,8 +230,8 @@ equal(v as 'a' | null, v as 'b' | undefined); equal(v as string, v as string & { tag: 'foo' } | undefined); >equal(v as string, v as string & { tag: 'foo' } | undefined) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as string : string > : ^^^^^^ >v : never @@ -246,8 +246,8 @@ equal(v as string, v as string & { tag: 'foo' } | undefined); equal(v as string & { tag: 'foo' } | undefined, v as string); >equal(v as string & { tag: 'foo' } | undefined, v as string) : void > : ^^^^ ->equal : (a: T, b: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>equal : (a: T, b: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >v as string & { tag: 'foo' } | undefined : (string & { tag: "foo"; }) | undefined > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >v : never diff --git a/tests/baselines/reference/inferenceOptionalProperties.types b/tests/baselines/reference/inferenceOptionalProperties.types index 785bb6f8de3bf..1f04d0aecb59d 100644 --- a/tests/baselines/reference/inferenceOptionalProperties.types +++ b/tests/baselines/reference/inferenceOptionalProperties.types @@ -2,8 +2,8 @@ === inferenceOptionalProperties.ts === declare function test(x: { [key: string]: T }): T; ->test : (x: { [key: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>test : (x: { [key: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -30,8 +30,8 @@ const y1 = test(x1); > : ^^^^^^^^^^^^^^^ >test(x1) : string | number > : ^^^^^^^^^^^^^^^ ->test : (x: { [key: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>test : (x: { [key: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x1 : { a?: string; b?: number; } > : ^^^^^^ ^^^^^^ ^^^ @@ -40,8 +40,8 @@ const y2 = test(x2); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test(x2) : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test : (x: { [key: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>test : (x: { [key: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x2 : { a?: string; b?: number | undefined; } > : ^^^^^^ ^^^^^^ ^^^ diff --git a/tests/baselines/reference/inferenceOptionalPropertiesStrict.types b/tests/baselines/reference/inferenceOptionalPropertiesStrict.types index a9f80e3f56a13..0277b32f06339 100644 --- a/tests/baselines/reference/inferenceOptionalPropertiesStrict.types +++ b/tests/baselines/reference/inferenceOptionalPropertiesStrict.types @@ -2,8 +2,8 @@ === inferenceOptionalPropertiesStrict.ts === declare function test(x: { [key: string]: T }): T; ->test : (x: { [key: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>test : (x: { [key: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { [key: string]: T; } > : ^^^^^^^^^^^^^^^^^^^^^ >key : string @@ -30,8 +30,8 @@ const y1 = test(x1); > : ^^^^^^^^^^^^^^^ >test(x1) : string | number > : ^^^^^^^^^^^^^^^ ->test : (x: { [key: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>test : (x: { [key: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x1 : { a?: string; b?: number; } > : ^^^^^^ ^^^^^^ ^^^ @@ -40,8 +40,8 @@ const y2 = test(x2); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test(x2) : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test : (x: { [key: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>test : (x: { [key: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x2 : { a?: string; b?: number | undefined; } > : ^^^^^^ ^^^^^^ ^^^ diff --git a/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types b/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types index dbdf6925d6819..78707cee24edb 100644 --- a/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types +++ b/tests/baselines/reference/inferenceOptionalPropertiesToIndexSignatures.types @@ -2,8 +2,8 @@ === inferenceOptionalPropertiesToIndexSignatures.ts === declare function foo(obj: { [x: string]: T }): T; ->foo : (obj: { [x: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (obj: { [x: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -46,8 +46,8 @@ let a1 = foo(x1); // string | number > : ^^^^^^^^^^^^^^^ >foo(x1) : string | number > : ^^^^^^^^^^^^^^^ ->foo : (obj: { [x: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (obj: { [x: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x1 : { a: string; b: number; } > : ^^^^^ ^^^^^ ^^^ @@ -56,8 +56,8 @@ let a2 = foo(x2); // string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(x2) : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (obj: { [x: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (obj: { [x: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x2 : { a: string; b: number | undefined; } > : ^^^^^ ^^^^^ ^^^ @@ -66,8 +66,8 @@ let a3 = foo(x3); // string | number > : ^^^^^^^^^^^^^^^ >foo(x3) : string | number > : ^^^^^^^^^^^^^^^ ->foo : (obj: { [x: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (obj: { [x: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x3 : { a: string; b?: number; } > : ^^^^^ ^^^^^^ ^^^ @@ -76,8 +76,8 @@ let a4 = foo(x4); // string | number > : ^^^^^^^^^^^^^^^ >foo(x4) : string | number > : ^^^^^^^^^^^^^^^ ->foo : (obj: { [x: string]: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (obj: { [x: string]: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x4 : { a: string; b?: number | undefined; } > : ^^^^^ ^^^^^^ ^^^ @@ -140,20 +140,20 @@ const query = Object.entries(obj).map( > : ^ ^^^ ^^^^^ >Object.entries(obj).map( ([k, v]) => `${k}=${encodeURIComponent(v)}`) : string[] > : ^^^^^^^^ ->Object.entries(obj).map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>Object.entries(obj).map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >Object.entries(obj) : [string, string][] > : ^^^^^^^^^^^^^^^^^^ ->Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>Object.entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>entries : { (o: { [s: string]: T; } | ArrayLike): [string, T][]; (o: {}): [string, any][]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >obj : { param2?: string | undefined; param1: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: [string, string], index: number, array: [string, string][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ([k, v]) => `${k}=${encodeURIComponent(v)}` >([k, v]) => `${k}=${encodeURIComponent(v)}` : ([k, v]: [string, string]) => string diff --git a/tests/baselines/reference/infiniteConstraints.errors.txt b/tests/baselines/reference/infiniteConstraints.errors.txt index 7dbe760461e85..646fe960ccc7b 100644 --- a/tests/baselines/reference/infiniteConstraints.errors.txt +++ b/tests/baselines/reference/infiniteConstraints.errors.txt @@ -2,9 +2,11 @@ infiniteConstraints.ts(4,37): error TS2536: Type '"val"' cannot be used to index infiniteConstraints.ts(31,43): error TS2322: Type 'Value<"dup">' is not assignable to type 'never'. infiniteConstraints.ts(31,63): error TS2322: Type 'Value<"dup">' is not assignable to type 'never'. infiniteConstraints.ts(36,71): error TS2536: Type '"foo"' cannot be used to index type 'T[keyof T]'. +infiniteConstraints.ts(48,27): error TS2344: Type 'Conv, ExactExtract>' does not satisfy the constraint 'unknown[]'. + Type '{ 0: [ExactExtract]; 1: Prepend, Conv, ExactExtract>, ExactExtract, ExactExtract>>>; }[ExactExtract extends ExactExtract ? 0 : 1]' is not assignable to type 'unknown[]'. -==== infiniteConstraints.ts (4 errors) ==== +==== infiniteConstraints.ts (5 errors) ==== // Both of the following types trigger the recursion limiter in getImmediateBaseConstraint type T1], { val: string }>["val"] }> = B; @@ -63,4 +65,7 @@ infiniteConstraints.ts(36,71): error TS2536: Type '"foo"' cannot be used to inde type Conv = { 0: [T]; 1: Prepend>>;}[U extends T ? 0 : 1]; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2344: Type 'Conv, ExactExtract>' does not satisfy the constraint 'unknown[]'. +!!! error TS2344: Type '{ 0: [ExactExtract]; 1: Prepend, Conv, ExactExtract>, ExactExtract, ExactExtract>>>; }[ExactExtract extends ExactExtract ? 0 : 1]' is not assignable to type 'unknown[]'. \ No newline at end of file diff --git a/tests/baselines/reference/instantiateContextualTypes.types b/tests/baselines/reference/instantiateContextualTypes.types index e51df99d1d857..570f400b47829 100644 --- a/tests/baselines/reference/instantiateContextualTypes.types +++ b/tests/baselines/reference/instantiateContextualTypes.types @@ -10,8 +10,8 @@ export interface A { } function fn(values: A, value: a) : void { ->fn : (values: A, value: a) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>fn : (values: A, value: a) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >values : A > : ^^^^ >value : a @@ -27,8 +27,8 @@ declare let handlers: A<(value: number) => void>; fn(handlers, value => alert(value)); >fn(handlers, value => alert(value)) : void > : ^^^^ ->fn : (values: A, value: a) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>fn : (values: A, value: a) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >handlers : A<(value: number) => void> > : ^^^ ^^ ^^^^^ ^ >value => alert(value) : (value: number) => void @@ -155,16 +155,16 @@ interface ActionHandler { } declare function handler(actionType: ActionType

, handler: Handler): ActionHandler ->handler : (actionType: ActionType

, handler: Handler) => ActionHandler -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>handler : (actionType: ActionType

, handler: Handler) => ActionHandler +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >actionType : ActionType

> : ^^^^^^^^^^^^^ >handler : Handler > : ^^^^^^^^^^^^^ declare function createReducer( ->createReducer : (defaultState: S, ...actionHandlers: ActionHandler[]) => any -> : ^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>createReducer : (defaultState: S, ...actionHandlers: ActionHandler[]) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ defaultState: S, >defaultState : S @@ -209,8 +209,8 @@ const NON_VOID_ACTION: ActionType = 'NON_VOID_ACTION' createReducer( >createReducer( defaultState, handler(NON_VOID_ACTION, (state, _payload) => state), handler(VOID_ACTION, state => state)) : any ->createReducer : (defaultState: S, ...actionHandlers: ActionHandler[]) => any -> : ^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>createReducer : (defaultState: S, ...actionHandlers: ActionHandler[]) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ defaultState, >defaultState : AppState @@ -219,8 +219,8 @@ createReducer( handler(NON_VOID_ACTION, (state, _payload) => state), >handler(NON_VOID_ACTION, (state, _payload) => state) : ActionHandler > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->handler : (actionType: ActionType

, handler: Handler) => ActionHandler -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>handler : (actionType: ActionType

, handler: Handler) => ActionHandler +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >NON_VOID_ACTION : ActionType > : ^^^^^^^^^^^^^^^^^^ >(state, _payload) => state : (state: AppState, _payload: number) => AppState @@ -235,8 +235,8 @@ createReducer( handler(VOID_ACTION, state => state) >handler(VOID_ACTION, state => state) : ActionHandler > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->handler : (actionType: ActionType

, handler: Handler) => ActionHandler -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>handler : (actionType: ActionType

, handler: Handler) => ActionHandler +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >VOID_ACTION : ActionType > : ^^^^^^^^^^^^^^^^ >state => state : (state: AppState) => AppState @@ -445,8 +445,8 @@ type BoxConsumerFromOuterBox = never; declare function passContentsToFunc(outerBox: T, consumer: BoxConsumerFromOuterBox): void; ->passContentsToFunc : (outerBox: T, consumer: BoxConsumerFromOuterBox) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>passContentsToFunc : (outerBox: T, consumer: BoxConsumerFromOuterBox) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >outerBox : T > : ^ >consumer : BoxConsumerFromOuterBox @@ -459,8 +459,8 @@ declare const outerBoxOfString: OuterBox; passContentsToFunc(outerBoxOfString, box => box.value); >passContentsToFunc(outerBoxOfString, box => box.value) : void > : ^^^^ ->passContentsToFunc : (outerBox: T, consumer: BoxConsumerFromOuterBox) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>passContentsToFunc : (outerBox: T, consumer: BoxConsumerFromOuterBox) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >outerBoxOfString : OuterBox > : ^^^^^^^^^^^^^^^^ >box => box.value : (box: InnerBox) => string @@ -493,18 +493,18 @@ class Interesting { return Promise.resolve().then(() => { >Promise.resolve().then(() => { if (1 < 2) { return 'SOMETHING'; } return 'ELSE'; }) : Promise<"SOMETHING" | "ELSE"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ->then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { if (1 < 2) { return 'SOMETHING'; } return 'ELSE'; } : () => "SOMETHING" | "ELSE" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -535,18 +535,18 @@ class Interesting { return Promise.resolve().then(() => { >Promise.resolve().then(() => { return 'ELSE'; }) : Promise<"SOMETHING" | "ELSE"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ->then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { return 'ELSE'; } : () => "ELSE" > : ^^^^^^^^^^^^ @@ -565,18 +565,18 @@ class Interesting { return Promise.resolve().then(() => { >Promise.resolve().then(() => { if (1 < 2) { return 'SOMETHING'; } return 'SOMETHING'; }) : Promise<"SOMETHING" | "ELSE"> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Promise.resolve().then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve() : Promise > : ^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ->then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>then : (onfulfilled?: ((value: void) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => { if (1 < 2) { return 'SOMETHING'; } return 'SOMETHING'; } : () => "SOMETHING" > : ^^^^^^^^^^^^^^^^^ @@ -603,8 +603,8 @@ class Interesting { // Repro from #32349 declare function invoke(f: () => T): T; ->invoke : (f: () => T) => T -> : ^ ^^ ^^ ^^^^^ +>invoke : (f: () => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : () => T > : ^^^^^^ @@ -613,8 +613,8 @@ let xx: 0 | 1 | 2 = invoke(() => 1); > : ^^^^^^^^^ >invoke(() => 1) : 1 > : ^ ->invoke : (f: () => T) => T -> : ^ ^^ ^^ ^^^^^ +>invoke : (f: () => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => 1 : () => 1 > : ^^^^^^^ >1 : 1 @@ -623,8 +623,8 @@ let xx: 0 | 1 | 2 = invoke(() => 1); // Repro from #32416 declare function assignPartial(target: T, partial: Partial): T; ->assignPartial : (target: T, partial: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assignPartial : (target: T, partial: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >target : T > : ^ >partial : Partial @@ -646,8 +646,8 @@ let obj = { assignPartial(obj, { foo(...args) {} }); // args has type [string] >assignPartial(obj, { foo(...args) {} }) : { foo(bar: string): void; } > : ^^^^^^ ^^ ^^^^^^^^^^ ->assignPartial : (target: T, partial: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assignPartial : (target: T, partial: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : { foo(bar: string): void; } > : ^^^^^^ ^^ ^^^^^^^^^^ >{ foo(...args) {} } : { foo(bar: string): void; } diff --git a/tests/baselines/reference/instantiationExpressionErrors.errors.txt b/tests/baselines/reference/instantiationExpressionErrors.errors.txt index 2603ed9c5fcfe..6ec48cca7c2a8 100644 --- a/tests/baselines/reference/instantiationExpressionErrors.errors.txt +++ b/tests/baselines/reference/instantiationExpressionErrors.errors.txt @@ -5,14 +5,14 @@ instantiationExpressionErrors.ts(13,14): error TS2693: 'number' only refers to a instantiationExpressionErrors.ts(18,12): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'number'. instantiationExpressionErrors.ts(18,14): error TS2693: 'number' only refers to a type, but is being used as a value here. instantiationExpressionErrors.ts(18,29): error TS1109: Expression expected. -instantiationExpressionErrors.ts(19,24): error TS2635: Type '{ (): number; g(): U; }' has no signatures for which the type argument list is applicable. +instantiationExpressionErrors.ts(19,24): error TS2635: Type '{ (): number; g(): U; }' has no signatures for which the type argument list is applicable. instantiationExpressionErrors.ts(23,23): error TS1005: '(' expected. instantiationExpressionErrors.ts(26,24): error TS2558: Expected 0 type arguments, but got 1. instantiationExpressionErrors.ts(39,2): error TS2554: Expected 0 arguments, but got 1. -instantiationExpressionErrors.ts(43,12): error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. -instantiationExpressionErrors.ts(44,12): error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. +instantiationExpressionErrors.ts(43,12): error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. +instantiationExpressionErrors.ts(44,12): error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. instantiationExpressionErrors.ts(44,12): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'number'. -instantiationExpressionErrors.ts(45,12): error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. +instantiationExpressionErrors.ts(45,12): error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. instantiationExpressionErrors.ts(45,12): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'number'. @@ -51,7 +51,7 @@ instantiationExpressionErrors.ts(45,12): error TS2365: Operator '>' cannot be ap !!! error TS1109: Expression expected. const a9 = (f); // Error, no applicable signatures ~~~~~~ -!!! error TS2635: Type '{ (): number; g(): U; }' has no signatures for which the type argument list is applicable. +!!! error TS2635: Type '{ (): number; g(): U; }' has no signatures for which the type argument list is applicable. // Type arguments with `?.` token @@ -83,15 +83,15 @@ instantiationExpressionErrors.ts(45,12): error TS2365: Operator '>' cannot be ap const r1 = f < true > true; ~~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. +!!! error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. const r2 = f < true > +1; ~~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. +!!! error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. ~~~~~~~~~~~~~ !!! error TS2365: Operator '>' cannot be applied to types 'boolean' and 'number'. const r3 = f < true > -1; ~~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. +!!! error TS2365: Operator '<' cannot be applied to types '{ (): T; g(): U; }' and 'boolean'. ~~~~~~~~~~~~~ !!! error TS2365: Operator '>' cannot be applied to types 'boolean' and 'number'. diff --git a/tests/baselines/reference/instantiationExpressionErrors.js b/tests/baselines/reference/instantiationExpressionErrors.js index 61a71c882db13..3176a7c7be842 100644 --- a/tests/baselines/reference/instantiationExpressionErrors.js +++ b/tests/baselines/reference/instantiationExpressionErrors.js @@ -198,17 +198,17 @@ declare let f: { }; declare const a1: { (): number; - g(): U; + g(): U; }; declare const a2: () => number; -declare const a3: () => U; +declare const a3: () => U; declare const a4: () => number; declare const a5: () => number; declare const a6: boolean; -declare const a7: () => U; +declare const a7: () => U; declare const a8: boolean; declare const a9: { - g(): U; + g(): U; }; declare const b1: number; declare const b2: number; @@ -224,61 +224,61 @@ declare const r2: boolean; declare const r3: boolean; declare const x2: { (): true; - g(): U; + g(): U; }; declare const x3: { (): true; - g(): U; + g(): U; }; declare const x4: { (): true; - g(): U; + g(): U; }; declare const x5: { (): true; - g(): U; + g(): U; }; declare let yy: number; declare const x6: { (): true; - g(): U; + g(): U; }; interface I { } declare let x10: { (): true; - g(): U; + g(): U; }; declare let x11: { (): true; - g(): U; + g(): U; }; declare function bar(): void; declare let x12: { (): true; - g(): U; + g(): U; }; declare class C { } declare let x13: { (): true; - g(): U; + g(): U; }; declare let x14: { (): true; - g(): U; + g(): U; }; declare class C1 { static specialFoo: { (): string; - g(): U; + g(): U; }; static bar: number; } declare class C2 { specialFoo: { (): string; - g(): U; + g(): U; }; bar: number; } @@ -289,7 +289,7 @@ declare class C3 { declare class C4 { protected specialFoo: { (): string; - g(): U; + g(): U; }; protected bar: number; } diff --git a/tests/baselines/reference/instantiationExpressionErrors.types b/tests/baselines/reference/instantiationExpressionErrors.types index 4e3f48011433c..ed22608c30694 100644 --- a/tests/baselines/reference/instantiationExpressionErrors.types +++ b/tests/baselines/reference/instantiationExpressionErrors.types @@ -2,68 +2,68 @@ === instantiationExpressionErrors.ts === declare let f: { (): T, g(): U }; ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ ->g : () => U -> : ^ ^^^^^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ // Type arguments in member expressions const a1 = f; // { (): number; g(): U; } ->a1 : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>a1 : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ const a2 = f.g; // () => number >a2 : () => number > : ^^^^^^^^^^^^ >f.g : () => number > : ^^^^^^^^^^^^ ->f.g : () => U -> : ^ ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ ->g : () => U -> : ^ ^^^^^^^ +>f.g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const a3 = f.g; // () => U ->a3 : () => U -> : ^ ^^^^^^^ ->f.g : () => U -> : ^ ^^^^^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ ->g : () => U -> : ^ ^^^^^^^ +>a3 : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>f.g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const a4 = f.g; // () => number >a4 : () => number > : ^^^^^^^^^^^^ >f.g : () => number > : ^^^^^^^^^^^^ ->f.g : () => U -> : ^ ^^^^^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ ->g : () => U -> : ^ ^^^^^^^ +>f.g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>g : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const a5 = f['g']; // () => number >a5 : () => number > : ^^^^^^^^^^^^ >f['g'] : () => number > : ^^^^^^^^^^^^ ->f['g'] : () => U -> : ^ ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f['g'] : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >'g' : "g" > : ^^^ @@ -76,8 +76,8 @@ const a6 = f['g']; // Error > : ^^^^^^^ >f : ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >number : any > : ^^^ >['g'] : string[] @@ -86,16 +86,16 @@ const a6 = f['g']; // Error > : ^^^ const a7 = (f)['g']; ->a7 : () => U -> : ^ ^^^^^^^ ->(f)['g'] : () => U -> : ^ ^^^^^^^ ->(f) : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>a7 : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>(f)['g'] : () => U +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>(f) : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >'g' : "g" > : ^^^ @@ -108,8 +108,8 @@ const a8 = f; // Relational operator error > : ^^^^^^^ >f : ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >number : any > : ^^^ > : number @@ -118,16 +118,16 @@ const a8 = f; // Relational operator error > : ^^^ const a9 = (f); // Error, no applicable signatures ->a9 : { g(): U; } -> : ^^^^ ^^^^^ ^^^ ->(f) : { g(): U; } -> : ^^^^ ^^^^^ ^^^ ->(f) : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>a9 : { g(): U; } +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>(f) : { g(): U; } +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>(f) : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ // Type arguments with `?.` token @@ -136,42 +136,42 @@ const b1 = f?.; // Error, `(` expected > : ^^^^^^ >f?. : number > : ^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ const b2 = f?.(); >b2 : number > : ^^^^^^ >f?.() : number > : ^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ const b3 = f?.(); >b3 : number > : ^^^^^^ >f?.() : number > : ^^^^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ const b4 = f?.(); // Error, expected no type arguments >b4 : number > : ^^^^^^ >f?.() : number > : ^^^^^^ ->f : { (): number; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): number; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ // Instantiation expression and binary operators declare let g: ((x: T) => T) | undefined; ->g : ((x: T) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>g : ((x: T) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >x : T > : ^ @@ -182,8 +182,8 @@ const c1 = g || ((x: string) => x); > : ^ ^^ ^^^^^^^^^^^ >g : ((x: string) => string) | undefined > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->g : ((x: T) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>g : ((x: T) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >((x: string) => x) : (x: string) => string > : ^ ^^ ^^^^^^^^^^^ >(x: string) => x : (x: string) => string @@ -200,8 +200,8 @@ const c2 = g ?? ((x: string) => x); > : ^ ^^ ^^^^^^^^^^^ >g : ((x: string) => string) | undefined > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->g : ((x: T) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>g : ((x: T) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >((x: string) => x) : (x: string) => string > : ^ ^^ ^^^^^^^^^^^ >(x: string) => x : (x: string) => string @@ -218,8 +218,8 @@ const c3 = g && ((x: string) => x); > : ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >g : ((x: string) => string) | undefined > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->g : ((x: T) => T) | undefined -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ +>g : ((x: T) => T) | undefined +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >((x: string) => x) : (x: string) => string > : ^ ^^ ^^^^^^^^^^^ >(x: string) => x : (x: string) => string @@ -236,8 +236,8 @@ const x1 = f > : ^^^^ >f(true) : true > : ^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -254,8 +254,8 @@ const r1 = f < true > true; > : ^^^^^^^ >f < true : boolean > : ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ >true : true @@ -268,8 +268,8 @@ const r2 = f < true > +1; > : ^^^^^^^ >f < true : boolean > : ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ >+1 : 1 @@ -284,8 +284,8 @@ const r3 = f < true > -1; > : ^^^^^^^ >f < true : boolean > : ^^^^^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ >-1 : -1 @@ -296,12 +296,12 @@ const r3 = f < true > -1; // All of the following are parsed as instantiation expressions const x2 = f ->x2 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x2 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -310,12 +310,12 @@ true; > : ^^^^ const x3 = f; ->x3 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x3 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -324,12 +324,12 @@ true; > : ^^^^ const x4 = f ->x4 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x4 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -338,12 +338,12 @@ if (true) {} > : ^^^^ const x5 = f ->x5 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x5 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -354,24 +354,24 @@ let yy = 0; > : ^ const x6 = f ->x6 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x6 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ interface I {} let x10 = f ->x10 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x10 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -386,12 +386,12 @@ this.bar() > : ^^^^^^^^^^ let x11 = f ->x11 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x11 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -400,12 +400,12 @@ function bar() {} > : ^^^^^^^^^^ let x12 = f ->x12 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x12 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -414,12 +414,12 @@ class C {} > : ^ let x13 = f ->x13 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x13 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -430,12 +430,12 @@ bar() > : ^^^^^^^^^^ let x14 = f ->x14 : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): true; g(): U; } -> : ^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>x14 : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): true; g(): U; } +> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ @@ -452,12 +452,12 @@ class C1 { > : ^^ static specialFoo = f ->specialFoo : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>specialFoo : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ static bar = 123 >bar : number @@ -471,12 +471,12 @@ class C2 { > : ^^ public specialFoo = f ->specialFoo : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>specialFoo : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ public bar = 123 >bar : number @@ -490,12 +490,12 @@ class C3 { > : ^^ private specialFoo = f ->specialFoo : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>specialFoo : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ private bar = 123 >bar : number @@ -509,12 +509,12 @@ class C4 { > : ^^ protected specialFoo = f ->specialFoo : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): string; g(): U; } -> : ^^^^^^^^^^^^^^^^ ^^^^^ ^^^ ->f : { (): T; g(): U; } -> : ^^^ ^^^^^ ^^^^ ^^^^^ ^^^ +>specialFoo : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): string; g(): U; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ +>f : { (): T; g(): U; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^ protected bar = 123 >bar : number diff --git a/tests/baselines/reference/instantiationExpressions.errors.txt b/tests/baselines/reference/instantiationExpressions.errors.txt index 3412fd4cbc4e4..f66afbbd1315f 100644 --- a/tests/baselines/reference/instantiationExpressions.errors.txt +++ b/tests/baselines/reference/instantiationExpressions.errors.txt @@ -1,7 +1,7 @@ instantiationExpressions.ts(6,16): error TS1099: Type argument list cannot be empty. -instantiationExpressions.ts(9,17): error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. +instantiationExpressions.ts(9,17): error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. instantiationExpressions.ts(12,21): error TS1099: Type argument list cannot be empty. -instantiationExpressions.ts(15,22): error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. +instantiationExpressions.ts(15,22): error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. instantiationExpressions.ts(18,21): error TS1099: Type argument list cannot be empty. instantiationExpressions.ts(20,22): error TS2635: Type 'ArrayConstructor' has no signatures for which the type argument list is applicable. instantiationExpressions.ts(23,24): error TS1099: Type argument list cannot be empty. @@ -31,7 +31,7 @@ instantiationExpressions.ts(164,40): error TS2344: Type 'U' does not satisfy the let f2 = fx; // (t: [string, number]) => [string, number] let f3 = fx; // Error ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. +!!! error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. } type T10 = typeof fx<>; // Error @@ -41,7 +41,7 @@ instantiationExpressions.ts(164,40): error TS2344: Type 'U' does not satisfy the type T12 = typeof fx; // (t: [string, number]) => [string, number] type T13 = typeof fx; // Error ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. +!!! error TS2635: Type '{ (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; }' has no signatures for which the type argument list is applicable. function f2() { const A0 = Array<>; // Error diff --git a/tests/baselines/reference/instantiationExpressions.types b/tests/baselines/reference/instantiationExpressions.types index 4b3156a650df7..e1ecffb83b174 100644 --- a/tests/baselines/reference/instantiationExpressions.types +++ b/tests/baselines/reference/instantiationExpressions.types @@ -2,22 +2,22 @@ === instantiationExpressions.ts === declare function fx(x: T): T; ->fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_1, U]): [T_1, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T_1, n: number): T_1; (t: [T_1, U]): [T_1, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : T > : ^ declare function fx(x: T, n: number): T; ->fx : { (x: T_1): T_1; (x: T, n: number): T; (t: [T_1, U]): [T_1, U]; } -> : ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T_1): T_1; (x: T, n: number): T; (t: [T_1, U]): [T_1, U]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >x : T > : ^ >n : number > : ^^^^^^ declare function fx(t: [T, U]): [T, U]; ->fx : { (x: T_1): T_1; (x: T_1, n: number): T_1; (t: [T, U]): [T, U]; } -> : ^^^^^^^^ ^^ ^^^ ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T_1): T_1; (x: T_1, n: number): T_1; (t: [T, U]): [T, U]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >t : [T, U] > : ^^^^^^ @@ -26,61 +26,61 @@ function f1() { > : ^^^^^^^^^^ let f0 = fx<>; // Error ->f0 : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ ->fx<> : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>f0 : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>fx<> : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ let f1 = fx; // { (x: string): string; (x: string, n: number): string; } >f1 : { (x: string): string; (x: string, n: number): string; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ >fx : { (x: string): string; (x: string, n: number): string; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^ ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ let f2 = fx; // (t: [string, number]) => [string, number] >f2 : (t: [string, number]) => [string, number] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fx : (t: [string, number]) => [string, number] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ let f3 = fx; // Error >f3 : {} > : ^^ >fx : {} > : ^^ ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ } type T10 = typeof fx<>; // Error ->T10 : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>T10 : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ type T11 = typeof fx; // { (x: string): string; (x: string, n: number): string; } >T11 : typeof fx > : ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ type T12 = typeof fx; // (t: [string, number]) => [string, number] >T12 : typeof fx > : ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ type T13 = typeof fx; // Error >T13 : typeof fx > : ->fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>fx : { (x: T): T; (x: T, n: number): T; (t: [T, U]): [T, U]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ function f2() { >f2 : () => void @@ -138,8 +138,8 @@ declare class C { > : ^ static f(x: U): U[]; ->f : (x: U) => U[] -> : ^ ^^ ^^ ^^^^^ +>f : (x: U) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : U > : ^ } @@ -149,10 +149,10 @@ function f3() { > : ^^^^^^^^^^ let c1 = C; // { new (x: string): C; f(x: U): T[]; prototype: C; } ->c1 : { new (x: string): C; prototype: C; f(x: U): U[]; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ->C : { new (x: string): C; prototype: C; f(x: U): U[]; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>c1 : { new (x: string): C; prototype: C; f(x: U): U[]; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>C : { new (x: string): C; prototype: C; f(x: U): U[]; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ @@ -161,19 +161,19 @@ function f3() { > : ^ ^^^^^^^^^^^^^^^^^^^^^ >C.f : (x: string) => string[] > : ^ ^^^^^^^^^^^^^^^^^^^^^ ->C.f : (x: U) => U[] -> : ^ ^^ ^^ ^^^^^ +>C.f : (x: U) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >C : typeof C > : ^^^^^^^^ ->f : (x: U) => U[] -> : ^ ^^ ^^ ^^^^^ +>f : (x: U) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ } function f10(f: { (a: T): T, (a: U, b: number): U[] }) { >f10 : (f: { (a: T): T; (a: U, b: number): U[]; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { (a: T): T; (a: U, b: number): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { (a: T): T; (a: U, b: number): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : U @@ -186,15 +186,15 @@ function f10(f: { (a: T): T, (a: U, b: number): U[] }) { > : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : { (a: string): string; (a: string, b: number): string[]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : { (a: T): T; (a: U, b: number): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { (a: T): T; (a: U, b: number): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ } function f11(f: { (a: T): T, (a: string, b: number): string[] }) { >f11 : (f: { (a: T): T; (a: string, b: number): string[]; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { (a: T): T; (a: string, b: number): string[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { (a: T): T; (a: string, b: number): string[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : string @@ -207,15 +207,15 @@ function f11(f: { (a: T): T, (a: string, b: number): string[] }) { > : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->f : { (a: T): T; (a: string, b: number): string[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { (a: T): T; (a: string, b: number): string[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ } function f12(f: { (a: T): T, x: string }) { >f12 : (f: { (a: T): T; x: string; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { (a: T): T; x: string; } -> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^^ +>f : { (a: T): T; x: string; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^ >a : T > : ^ >x : string @@ -226,8 +226,8 @@ function f12(f: { (a: T): T, x: string }) { > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ >f : { (a: string): string; x: string; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ->f : { (a: T): T; x: string; } -> : ^^^ ^^ ^^ ^^^ ^^^^^ ^^^ +>f : { (a: T): T; x: string; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^ } function f13(f: { x: string, y: string }) { @@ -252,8 +252,8 @@ function f13(f: { x: string, y: string }) { function f14(f: { new (a: T): T, new (a: U, b: number): U[] }) { >f14 : (f: { new (a: T): T; new (a: U, b: number): U[]; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { new (a: T): T; new (a: U, b: number): U[]; } -> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { new (a: T): T; new (a: U, b: number): U[]; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : U @@ -266,15 +266,15 @@ function f14(f: { new (a: T): T, new (a: U, b: number): U[] }) { > : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : { new (a: string): string; new (a: string, b: number): string[]; } > : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : { new (a: T): T; new (a: U, b: number): U[]; } -> : ^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { new (a: T): T; new (a: U, b: number): U[]; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ } function f15(f: { new (a: T): T, (a: U, b: number): U[] }) { >f15 : (f: { new (a: T): T; (a: U, b: number): U[]; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { (a: U, b: number): U[]; new (a: T): T; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ +>f : { (a: U, b: number): U[]; new (a: T): T; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >a : T > : ^ >a : U @@ -287,15 +287,15 @@ function f15(f: { new (a: T): T, (a: U, b: number): U[] }) { > : ^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : { (a: string, b: number): string[]; new (a: string): string; } > : ^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->f : { (a: U, b: number): U[]; new (a: T): T; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ +>f : { (a: U, b: number): U[]; new (a: T): T; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ } function f16(f: { new (a: T): T, (a: string, b: number): string[] }) { >f16 : (f: { new (a: T): T; (a: string, b: number): string[]; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { (a: string, b: number): string[]; new (a: T): T; } -> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ +>f : { (a: string, b: number): string[]; new (a: T): T; } +> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >a : T > : ^ >a : string @@ -308,15 +308,15 @@ function f16(f: { new (a: T): T, (a: string, b: number): string[] }) { > : ^^^^^ ^^^^^^^^^^^^^^^^^^^ >f : new (a: string) => string > : ^^^^^ ^^^^^^^^^^^^^^^^^^^ ->f : { (a: string, b: number): string[]; new (a: T): T; } -> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ +>f : { (a: string, b: number): string[]; new (a: T): T; } +> : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ } function f17(f: { (a: T): T, new (a: string, b: number): string[] }) { >f17 : (f: { (a: T): T; new (a: string, b: number): string[]; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { (a: T): T; new (a: string, b: number): string[]; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { (a: T): T; new (a: string, b: number): string[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ >a : T > : ^ >a : string @@ -329,15 +329,15 @@ function f17(f: { (a: T): T, new (a: string, b: number): string[] }) { > : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->f : { (a: T): T; new (a: string, b: number): string[]; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>f : { (a: T): T; new (a: string, b: number): string[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ } function f20(f: ((a: T) => T) & ((a: U, b: number) => U[])) { >f20 : (f: ((a: T) => T) & ((a: U, b: number) => U[])) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) & ((a: U, b: number) => U[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) & ((a: U, b: number) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -350,15 +350,15 @@ function f20(f: ((a: T) => T) & ((a: U, b: number) => U[])) { > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : ((a: string) => string) & ((a: string, b: number) => string[]) > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : ((a: T) => T) & ((a: U, b: number) => U[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) & ((a: U, b: number) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f21(f: ((a: T) => T) & ((a: string, b: number) => string[])) { >f21 : (f: ((a: T) => T) & ((a: string, b: number) => string[])) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) & ((a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) & ((a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -371,15 +371,15 @@ function f21(f: ((a: T) => T) & ((a: string, b: number) => string[])) { > : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->f : ((a: T) => T) & ((a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) & ((a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f22(f: ((a: T) => T) & { x: string }) { >f22 : (f: ((a: T) => T) & { x: string; }) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) & { x: string; } -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^ ^^^ +>f : ((a: T) => T) & { x: string; } +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^ ^^^ >a : T > : ^ >x : string @@ -390,8 +390,8 @@ function f22(f: ((a: T) => T) & { x: string }) { > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >f : ((a: string) => string) & { x: string; } > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ->f : ((a: T) => T) & { x: string; } -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^ ^^^ +>f : ((a: T) => T) & { x: string; } +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^ ^^^ } function f23(f: { x: string } & { y: string }) { @@ -416,8 +416,8 @@ function f23(f: { x: string } & { y: string }) { function f24(f: (new (a: T) => T) & (new (a: U, b: number) => U[])) { >f24 : (f: (new (a: T) => T) & (new (a: U, b: number) => U[])) => void > : ^ ^^ ^^^^^^^^^ ->f : (new (a: T) => T) & (new (a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) & (new (a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -430,15 +430,15 @@ function f24(f: (new (a: T) => T) & (new (a: U, b: number) => U[])) { > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) & (new (a: string, b: number) => string[]) > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : (new (a: T) => T) & (new (a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) & (new (a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f25(f: (new (a: T) => T) & ((a: U, b: number) => U[])) { >f25 : (f: (new (a: T) => T) & ((a: U, b: number) => U[])) => void > : ^ ^^ ^^^^^^^^^ ->f : (new (a: T) => T) & ((a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) & ((a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -451,15 +451,15 @@ function f25(f: (new (a: T) => T) & ((a: U, b: number) => U[])) { > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) & ((a: string, b: number) => string[]) > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : (new (a: T) => T) & ((a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) & ((a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f26(f: (new (a: T) => T) & ((a: string, b: number) => string[])) { >f26 : (f: (new (a: T) => T) & ((a: string, b: number) => string[])) => void > : ^ ^^ ^^^^^^^^^ ->f : (new (a: T) => T) & ((a: string, b: number) => string[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) & ((a: string, b: number) => string[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -472,15 +472,15 @@ function f26(f: (new (a: T) => T) & ((a: string, b: number) => string[])) { > : ^^^^^ ^^^^^^^^^^^^^^^^^^^ >f : new (a: string) => string > : ^^^^^ ^^^^^^^^^^^^^^^^^^^ ->f : (new (a: T) => T) & ((a: string, b: number) => string[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) & ((a: string, b: number) => string[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f27(f: ((a: T) => T) & (new (a: string, b: number) => string[])) { >f27 : (f: ((a: T) => T) & (new (a: string, b: number) => string[])) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) & (new (a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) & (new (a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -493,15 +493,15 @@ function f27(f: ((a: T) => T) & (new (a: string, b: number) => string[])) { > : ^ ^^^^^^^^^^^^^^^^^^^ >f : (a: string) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->f : ((a: T) => T) & (new (a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) & (new (a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f30(f: ((a: T) => T) | ((a: U, b: number) => U[])) { >f30 : (f: ((a: T) => T) | ((a: U, b: number) => U[])) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) | ((a: U, b: number) => U[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) | ((a: U, b: number) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -514,15 +514,15 @@ function f30(f: ((a: T) => T) | ((a: U, b: number) => U[])) { > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : ((a: string) => string) | ((a: string, b: number) => string[]) > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : ((a: T) => T) | ((a: U, b: number) => U[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) | ((a: U, b: number) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f31(f: ((a: T) => T) | ((a: string, b: number) => string[])) { >f31 : (f: ((a: T) => T) | ((a: string, b: number) => string[])) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) | ((a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) | ((a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -535,15 +535,15 @@ function f31(f: ((a: T) => T) | ((a: string, b: number) => string[])) { > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: string) => string) | {} > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : ((a: T) => T) | ((a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) | ((a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f32(f: ((a: T) => T) | { x: string }) { >f32 : (f: ((a: T) => T) | { x: string; }) => void > : ^ ^^ ^^^^^^^^^ ->f : { x: string; } | ((a: T) => T) -> : ^^^^^ ^^^^^^^^ ^^ ^^ ^^^^^ ^ +>f : { x: string; } | ((a: T) => T) +> : ^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ >a : T > : ^ >x : string @@ -554,8 +554,8 @@ function f32(f: ((a: T) => T) | { x: string }) { > : ^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >f : { x: string; } | ((a: string) => string) > : ^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->f : { x: string; } | ((a: T) => T) -> : ^^^^^ ^^^^^^^^ ^^ ^^ ^^^^^ ^ +>f : { x: string; } | ((a: T) => T) +> : ^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ } function f33(f: { x: string } | { y: string }) { @@ -580,8 +580,8 @@ function f33(f: { x: string } | { y: string }) { function f34(f: (new (a: T) => T) | (new (a: U, b: number) => U[])) { >f34 : (f: (new (a: T) => T) | (new (a: U, b: number) => U[])) => void > : ^ ^^ ^^^^^^^^^ ->f : (new (a: T) => T) | (new (a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) | (new (a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -594,15 +594,15 @@ function f34(f: (new (a: T) => T) | (new (a: U, b: number) => U[])) { > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) | (new (a: string, b: number) => string[]) > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : (new (a: T) => T) | (new (a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) | (new (a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f35(f: (new (a: T) => T) | ((a: U, b: number) => U[])) { >f35 : (f: (new (a: T) => T) | ((a: U, b: number) => U[])) => void > : ^ ^^ ^^^^^^^^^ ->f : (new (a: T) => T) | ((a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) | ((a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : U @@ -615,15 +615,15 @@ function f35(f: (new (a: T) => T) | ((a: U, b: number) => U[])) { > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ >f : (new (a: string) => string) | ((a: string, b: number) => string[]) > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^ ->f : (new (a: T) => T) | ((a: U, b: number) => U[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) | ((a: U, b: number) => U[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f36(f: (new (a: T) => T) | ((a: string, b: number) => string[])) { >f36 : (f: (new (a: T) => T) | ((a: string, b: number) => string[])) => void > : ^ ^^ ^^^^^^^^^ ->f : (new (a: T) => T) | ((a: string, b: number) => string[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) | ((a: string, b: number) => string[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -636,15 +636,15 @@ function f36(f: (new (a: T) => T) | ((a: string, b: number) => string[])) { > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : (new (a: string) => string) | {} > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (new (a: T) => T) | ((a: string, b: number) => string[]) -> : ^^^^^^ ^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : (new (a: T) => T) | ((a: string, b: number) => string[]) +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f37(f: ((a: T) => T) | (new (a: string, b: number) => string[])) { >f37 : (f: ((a: T) => T) | (new (a: string, b: number) => string[])) => void > : ^ ^^ ^^^^^^^^^ ->f : ((a: T) => T) | (new (a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) | (new (a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ >a : T > : ^ >a : string @@ -657,19 +657,19 @@ function f37(f: ((a: T) => T) | (new (a: string, b: number) => string[])) { > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((a: string) => string) | {} > : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : ((a: T) => T) | (new (a: string, b: number) => string[]) -> : ^^ ^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ +>f : ((a: T) => T) | (new (a: string, b: number) => string[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^ } function f38(x: A) => A) | ((x: B) => B[]), U>(f: T | U | ((x: C) => C[][])) { ->f38 : (x: A) => A) | ((x: B) => B[]), U>(f: T | U | ((x: C) => C[][])) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ +>f38 : (x: A) => A) | ((x: B) => B[]), U extends unknown>(f: T | U | ((x: C) => C[][])) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : A > : ^ >x : B > : ^ ->f : T | U | ((x: C) => C[][]) -> : ^^^^^^^^^^ ^^ ^^ ^^^^^ ^ +>f : T | U | ((x: C) => C[][]) +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ >x : C > : ^ @@ -678,13 +678,13 @@ function f38(x: A) => A) | ((x: B) => B[]), U>(f: T | U | ( > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >f : U | ((x: string) => string) | ((x: string) => string[]) | ((x: string) => string[][]) > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->f : T | U | ((x: C) => C[][]) -> : ^^^^^^^^^^ ^^ ^^ ^^^^^ ^ +>f : T | U | ((x: C) => C[][]) +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^ } function makeBox(value: T) { ->makeBox : (value: T) => { value: T; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ +>makeBox : (value: T) => { value: T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >value : T > : ^ @@ -698,8 +698,8 @@ function makeBox(value: T) { type BoxFunc = typeof makeBox; // (value: T) => { value: T } >BoxFunc : typeof makeBox > : ->makeBox : (value: T_1) => { value: T_1; } -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>makeBox : (value: T_1) => { value: T_1; } +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ type StringBoxFunc = BoxFunc; // (value: string) => { value: string } >StringBoxFunc : StringBoxFunc @@ -708,8 +708,8 @@ type StringBoxFunc = BoxFunc; // (value: string) => { value: string } type Box = ReturnType>; // { value: T } >Box : { value: T; } > : ^^^^^^^^^^^^^ ->makeBox : (value: T_1) => { value: T_1; } -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>makeBox : (value: T_1) => { value: T_1; } +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ type StringBox = Box; // { value: string } >StringBox : StringBox @@ -722,8 +722,8 @@ type A = InstanceType>; // U[] > : ^^^^^^^^^^^^^^^^ declare const g1: { ->g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ +>g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): { a: T }; >a : T @@ -741,8 +741,8 @@ declare const g1: { type T30 = typeof g1; // { (a: V) => { a: V }; new (b: V) => { b: V }; } >T30 : typeof g1 > : ->g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } -> : ^^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^ ^^^ ^^^ +>g1 : { (a: T): { a: T; }; new (b: U): { b: U; }; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ type T31 = ReturnType>; // { a: A } >T31 : { a: A; } @@ -778,8 +778,8 @@ type T41 = typeof g2; // Error > : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ declare const g3: { ->g3 : { (a: T): T; new (b: T): T; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>g3 : { (a: T): T; new (b: T): T; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (a: T): T; >a : T @@ -793,12 +793,12 @@ declare const g3: { type T50 = typeof g3; // (a: U) => U >T50 : typeof g3 > : ->g3 : { (a: T): T; new (b: T): T; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>g3 : { (a: T): T; new (b: T): T; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ type T51 = typeof g3; // (b: U) => U >T51 : typeof g3 > : ->g3 : { (a: T): T; new (b: T): T; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ +>g3 : { (a: T): T; new (b: T): T; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ diff --git a/tests/baselines/reference/interfaceExtendsObjectIntersection.types b/tests/baselines/reference/interfaceExtendsObjectIntersection.types index f5ed7d6f05007..b96d686bf7883 100644 --- a/tests/baselines/reference/interfaceExtendsObjectIntersection.types +++ b/tests/baselines/reference/interfaceExtendsObjectIntersection.types @@ -68,16 +68,16 @@ type Constructor = new () => T; > : ^^^^^^^^^^^^^^ declare function Constructor(): Constructor; ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ class C1 extends Constructor() { x: string } >C1 : C1 > : ^^ >Constructor() : I1 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -86,8 +86,8 @@ class C2 extends Constructor() { x: string } > : ^^ >Constructor() : I2 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -96,8 +96,8 @@ class C3 extends Constructor() { x: string } > : ^^ >Constructor() : I3 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -106,8 +106,8 @@ class C4 extends Constructor() { x: string } > : ^^ >Constructor() : I4 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -116,8 +116,8 @@ class C5 extends Constructor() { x: string } > : ^^ >Constructor() : I5 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -126,8 +126,8 @@ class C6 extends Constructor() { x: string } > : ^^ >Constructor() : I6 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -136,8 +136,8 @@ class C7 extends Constructor() { x: string } > : ^^ >Constructor() : I7 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -240,8 +240,8 @@ class C20 extends Constructor>() { x: string } > : ^^^ >Constructor>() : Partial > : ^^^^^^^^^^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -250,8 +250,8 @@ class C21 extends Constructor>() { x: string } > : ^^^ >Constructor>() : Readonly > : ^^^^^^^^^^^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -260,8 +260,8 @@ class C22 extends Constructor>() { x: string } > : ^^^ >Constructor>() : Identifiable > : ^^^^^^^^^^^^^^^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ @@ -270,8 +270,8 @@ class C23 extends Constructor>() { x: string } > : ^^^ >Constructor>() : Identifiable > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >b : number > : ^^^^^^ >x : string diff --git a/tests/baselines/reference/interfaceExtendsObjectIntersectionErrors.types b/tests/baselines/reference/interfaceExtendsObjectIntersectionErrors.types index 046676deafcfb..f1b40037a9012 100644 --- a/tests/baselines/reference/interfaceExtendsObjectIntersectionErrors.types +++ b/tests/baselines/reference/interfaceExtendsObjectIntersectionErrors.types @@ -50,16 +50,16 @@ type Constructor = new () => T; > : ^^^^^^^^^^^^^^ declare function Constructor(): Constructor; ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ class C1 extends Constructor() { a: string } >C1 : C1 > : ^^ >Constructor() : T1 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >a : string > : ^^^^^^ @@ -68,8 +68,8 @@ class C2 extends Constructor() { b: string } > : ^^ >Constructor() : T2 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >b : string > : ^^^^^^ @@ -78,8 +78,8 @@ class C3 extends Constructor() { length: string } > : ^^ >Constructor() : number[] > : ^^^^^^^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >length : string > : ^^^^^^ @@ -88,8 +88,8 @@ class C4 extends Constructor() { 0: number } > : ^^ >Constructor() : [string, number] > : ^^^^^^^^^^^^^^^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >0 : number > : ^^^^^^ @@ -98,8 +98,8 @@ class C5 extends Constructor() { c: number } > : ^^ >Constructor() : T5 > : ^^ ->Constructor : () => Constructor -> : ^ ^^^^^^^ +>Constructor : () => Constructor +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >c : number > : ^^^^^^ diff --git a/tests/baselines/reference/intersectionNarrowing.types b/tests/baselines/reference/intersectionNarrowing.types index 69f17ad48e2af..69f3be424456c 100644 --- a/tests/baselines/reference/intersectionNarrowing.types +++ b/tests/baselines/reference/intersectionNarrowing.types @@ -4,8 +4,8 @@ // Repros from #43130 function f1(x: T & string | T & undefined) { ->f1 : (x: (T & string) | (T & undefined)) => void -> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ +>f1 : (x: (T & string) | (T & undefined)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & string) | (T & undefined) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -20,8 +20,8 @@ function f1(x: T & string | T & undefined) { } function f2(x: T & string | T & undefined) { ->f2 : (x: (T & string) | (T & undefined)) => void -> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ +>f2 : (x: (T & string) | (T & undefined)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & string) | (T & undefined) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -45,8 +45,8 @@ function f2(x: T & string | T & undefined) { } function f3(x: T & string | T & number) { ->f3 : (x: (T & string) | (T & number)) => void -> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ +>f3 : (x: (T & string) | (T & number)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & string) | (T & number) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -72,8 +72,8 @@ function f3(x: T & string | T & number) { } function f4(x: T & 1 | T & 2) { ->f4 : (x: (T & 1) | (T & 2)) => void -> : ^ ^^ ^^^ ^ ^ ^^^^^^^^^^ +>f4 : (x: (T & 1) | (T & 2)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^ ^ ^^^^^^^^^^ >x : (T & 1) | (T & 2) > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/intersectionSatisfiesConstraint.types b/tests/baselines/reference/intersectionSatisfiesConstraint.types index 83cb4a695a1b1..c8519521c9ba9 100644 --- a/tests/baselines/reference/intersectionSatisfiesConstraint.types +++ b/tests/baselines/reference/intersectionSatisfiesConstraint.types @@ -28,12 +28,12 @@ const myFirstFunction = (param1: T) > : ^^^^^^ >Object.assign(param1, { otherProperty: 3 }) : T & { otherProperty: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.assign : { (target: T_1, source: U): T_1 & U; (target: T_1, source1: U, source2: V): T_1 & U & V; (target: T_1, source1: U, source2: V, source3: W): T_1 & U & V & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>Object.assign : { (target: T_1, source: U): T_1 & U; (target: T_1, source1: U, source2: V): T_1 & U & V; (target: T_1, source1: U, source2: V, source3: W): T_1 & U & V & W; (target: object, ...sources: any[]): any; } +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->assign : { (target: T_1, source: U): T_1 & U; (target: T_1, source1: U, source2: V): T_1 & U & V; (target: T_1, source1: U, source2: V, source3: W): T_1 & U & V & W; (target: object, ...sources: any[]): any; } -> : ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>assign : { (target: T_1, source: U): T_1 & U; (target: T_1, source1: U, source2: V): T_1 & U & V; (target: T_1, source1: U, source2: V, source3: W): T_1 & U & V & W; (target: object, ...sources: any[]): any; } +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >param1 : T > : ^ >{ otherProperty: 3 } : { otherProperty: number; } diff --git a/tests/baselines/reference/intersectionTypeInference3.types b/tests/baselines/reference/intersectionTypeInference3.types index bfa287452f9df..07c92c6948ee6 100644 --- a/tests/baselines/reference/intersectionTypeInference3.types +++ b/tests/baselines/reference/intersectionTypeInference3.types @@ -40,38 +40,38 @@ const c1 = Array.from(a).concat(Array.from(b)); > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array.from(a) : A[] > : ^^^ ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ ->from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >a : Set > : ^^^^^^ >concat : { (...items: ConcatArray[]): A[]; (...items: (A | ConcatArray)[]): A[]; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Array.from(b) : A[] > : ^^^ ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ ->from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >b : Set > : ^^^^^^ // Simpler repro declare function from(): T[]; ->from : () => T[] -> : ^ ^^^^^^^ +>from : () => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ const c2: ReadonlyArray = from(); >c2 : readonly A[] > : ^^^^^^^^^^^^ >from() : A[] > : ^^^ ->from : () => T[] -> : ^ ^^^^^^^ +>from : () => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/intersectionWithConflictingPrivates.types b/tests/baselines/reference/intersectionWithConflictingPrivates.types index 811ac618efe45..afab5888f7654 100644 --- a/tests/baselines/reference/intersectionWithConflictingPrivates.types +++ b/tests/baselines/reference/intersectionWithConflictingPrivates.types @@ -220,12 +220,12 @@ class Foo { return Promise.resolve(undefined); >Promise.resolve(undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ } diff --git a/tests/baselines/reference/intersectionWithUnionConstraint.types b/tests/baselines/reference/intersectionWithUnionConstraint.types index 43435329a10f4..3859761532442 100644 --- a/tests/baselines/reference/intersectionWithUnionConstraint.types +++ b/tests/baselines/reference/intersectionWithUnionConstraint.types @@ -89,8 +89,8 @@ function f4(x: T & (number | object)) { } function f5(x: keyof T & U) { ->f5 : (x: keyof T & U) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ +>f5 : (x: keyof T & U) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >x : keyof T & U > : ^^^^^^^^^^^ diff --git a/tests/baselines/reference/intraExpressionInferences.js b/tests/baselines/reference/intraExpressionInferences.js index fbdd0e64bd30e..2a3c236d6484d 100644 --- a/tests/baselines/reference/intraExpressionInferences.js +++ b/tests/baselines/reference/intraExpressionInferences.js @@ -530,7 +530,7 @@ interface MyInterface { retrieveGeneric: (parameter: string) => T; operateWithGeneric: (generic: T) => string; } -declare const inferTypeFn: (generic: MyInterface) => MyInterface; +declare const inferTypeFn: (generic: MyInterface) => MyInterface; declare const myGeneric: MyInterface; declare function make(o: { mutations: M; diff --git a/tests/baselines/reference/intraExpressionInferences.types b/tests/baselines/reference/intraExpressionInferences.types index 7078c2603beb4..1b9ac0a4ae707 100644 --- a/tests/baselines/reference/intraExpressionInferences.types +++ b/tests/baselines/reference/intraExpressionInferences.types @@ -4,8 +4,8 @@ // Repros from #47599 declare function callIt(obj: { ->callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { produce: (n: number) => T; consume: (x: T) => void; } > : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ @@ -26,8 +26,8 @@ declare function callIt(obj: { callIt({ >callIt({ produce: () => 0, consume: n => n.toFixed()}) : void > : ^^^^ ->callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ produce: () => 0, consume: n => n.toFixed()} : { produce: () => number; consume: (n: number) => string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -60,8 +60,8 @@ callIt({ callIt({ >callIt({ produce: _a => 0, consume: n => n.toFixed(),}) : void > : ^^^^ ->callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ produce: _a => 0, consume: n => n.toFixed(),} : { produce: (_a: number) => number; consume: (n: number) => string; } > : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -96,8 +96,8 @@ callIt({ callIt({ >callIt({ produce() { return 0; }, consume: n => n.toFixed()}) : void > : ^^^^ ->callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>callIt : (obj: { produce: (n: number) => T; consume: (x: T) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ produce() { return 0; }, consume: n => n.toFixed()} : { produce(): number; consume: (n: number) => string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -129,8 +129,8 @@ callIt({ }); declare function callItT(obj: [(n: number) => T, (x: T) => void]): void; ->callItT : (obj: [(n: number) => T, (x: T) => void]) => void -> : ^ ^^ ^^ ^^^^^ +>callItT : (obj: [(n: number) => T, (x: T) => void]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : [(n: number) => T, (x: T) => void] > : ^^ ^^ ^^^^^ ^^^ ^^ ^^^^^ ^ >n : number @@ -141,8 +141,8 @@ declare function callItT(obj: [(n: number) => T, (x: T) => void]): void; callItT([() => 0, n => n.toFixed()]); >callItT([() => 0, n => n.toFixed()]) : void > : ^^^^ ->callItT : (obj: [(n: number) => T, (x: T) => void]) => void -> : ^ ^^ ^^ ^^^^^ +>callItT : (obj: [(n: number) => T, (x: T) => void]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[() => 0, n => n.toFixed()] : [() => number, (n: number) => string] > : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >() => 0 : () => number @@ -165,8 +165,8 @@ callItT([() => 0, n => n.toFixed()]); callItT([_a => 0, n => n.toFixed()]); >callItT([_a => 0, n => n.toFixed()]) : void > : ^^^^ ->callItT : (obj: [(n: number) => T, (x: T) => void]) => void -> : ^ ^^ ^^ ^^^^^ +>callItT : (obj: [(n: number) => T, (x: T) => void]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[_a => 0, n => n.toFixed()] : [(_a: number) => number, (n: number) => string] > : ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >_a => 0 : (_a: number) => number @@ -205,10 +205,10 @@ interface MyInterface { } const inferTypeFn = (generic: MyInterface) => generic; ->inferTypeFn : (generic: MyInterface) => MyInterface -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ->(generic: MyInterface) => generic : (generic: MyInterface) => MyInterface -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>inferTypeFn : (generic: MyInterface) => MyInterface +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>(generic: MyInterface) => generic : (generic: MyInterface) => MyInterface +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >generic : MyInterface > : ^^^^^^^^^^^^^^ >generic : MyInterface @@ -219,8 +219,8 @@ const myGeneric = inferTypeFn({ > : ^^^^^^^^^^^^^^^^^^^ >inferTypeFn({ retrieveGeneric: parameter => 5, operateWithGeneric: generic => generic.toFixed()}) : MyInterface > : ^^^^^^^^^^^^^^^^^^^ ->inferTypeFn : (generic: MyInterface) => MyInterface -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>inferTypeFn : (generic: MyInterface) => MyInterface +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >{ retrieveGeneric: parameter => 5, operateWithGeneric: generic => generic.toFixed()} : { retrieveGeneric: (parameter: string) => number; operateWithGeneric: (generic: number) => string; } > : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -255,8 +255,8 @@ const myGeneric = inferTypeFn({ // Repro #38623 function make(o: { mutations: M, action: (m: M) => void }) { } ->make : (o: { mutations: M; action: (m: M) => void; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>make : (o: { mutations: M; action: (m: M) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >o : { mutations: M; action: (m: M) => void; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^ >mutations : M @@ -269,8 +269,8 @@ function make(o: { mutations: M, action: (m: M) => void }) { } make({ >make({ mutations: { foo() { } }, action: (a) => { a.foo() }}) : void > : ^^^^ ->make : (o: { mutations: M; action: (m: M) => void; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>make : (o: { mutations: M; action: (m: M) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ mutations: { foo() { } }, action: (a) => { a.foo() }} : { mutations: { foo(): void; }; action: (a: { foo(): void; }) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -306,8 +306,8 @@ make({ // Repro from #38845 declare function foo(options: { a: A, b: (a: A) => void }): void; ->foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>foo : (options: { a: A; b: (a: A) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >options : { a: A; b: (a: A) => void; } > : ^^^^^ ^^^^^ ^^^ >a : A @@ -320,8 +320,8 @@ declare function foo(options: { a: A, b: (a: A) => void }): void; foo({ >foo({ a: () => { return 42 }, b(a) {},}) : void > : ^^^^ ->foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>foo : (options: { a: A; b: (a: A) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: () => { return 42 }, b(a) {},} : { a: () => 42; b(a: () => 42): void; } > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -344,8 +344,8 @@ foo({ foo({ >foo({ a: function () { return 42 }, b(a) {},}) : void > : ^^^^ ->foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>foo : (options: { a: A; b: (a: A) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: function () { return 42 }, b(a) {},} : { a: () => 42; b(a: () => 42): void; } > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -368,8 +368,8 @@ foo({ foo({ >foo({ a() { return 42 }, b(a) {},}) : void > : ^^^^ ->foo : (options: { a: A; b: (a: A) => void; }) => void -> : ^ ^^ ^^ ^^^^^ +>foo : (options: { a: A; b: (a: A) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a() { return 42 }, b(a) {},} : { a(): 42; b(a: () => 42): void; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -412,16 +412,16 @@ type Chain = { }; function test(foo: Chain) {} ->test : (foo: Chain) => void -> : ^ ^^ ^^ ^^ ^^^^^^^^^ +>test : (foo: Chain) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >foo : Chain > : ^^^^^^^^^^^^^ test({ >test({ a: () => 0, b: (a) => 'a', c: (b) => { const x: string = b; }}) : void > : ^^^^ ->test : (foo: Chain) => void -> : ^ ^^ ^^ ^^ ^^^^^^^^^ +>test : (foo: Chain) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ a: () => 0, b: (a) => 'a', c: (b) => { const x: string = b; }} : { a: () => number; b: (a: number) => string; c: (b: string) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -462,8 +462,8 @@ test({ test({ >test({ a: () => 0, b: (a) => a, c: (b) => { const x: number = b; }}) : void > : ^^^^ ->test : (foo: Chain) => void -> : ^ ^^ ^^ ^^ ^^^^^^^^^ +>test : (foo: Chain) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ a: () => 0, b: (a) => a, c: (b) => { const x: number = b; }} : { a: () => number; b: (a: number) => number; c: (b: number) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -648,8 +648,8 @@ createMappingComponent({ // Repro from #48279 function simplified(props: { generator: () => T, receiver: (t: T) => any }) {} ->simplified : (props: { generator: () => T; receiver: (t: T) => any; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>simplified : (props: { generator: () => T; receiver: (t: T) => any; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >props : { generator: () => T; receiver: (t: T) => any; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ >generator : () => T @@ -660,8 +660,8 @@ function simplified(props: { generator: () => T, receiver: (t: T) => any }) { > : ^ function whatIWant(props: { generator: (bob: any) => T, receiver: (t: T) => any }) {} ->whatIWant : (props: { generator: (bob: any) => T; receiver: (t: T) => any; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>whatIWant : (props: { generator: (bob: any) => T; receiver: (t: T) => any; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >props : { generator: (bob: any) => T; receiver: (t: T) => any; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ >generator : (bob: any) => T @@ -674,8 +674,8 @@ function whatIWant(props: { generator: (bob: any) => T, receiver: (t: T) => a > : ^ function nonObject(generator: (bob: any) => T, receiver: (t: T) => any) {} ->nonObject : (generator: (bob: any) => T, receiver: (t: T) => any) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>nonObject : (generator: (bob: any) => T, receiver: (t: T) => any) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >generator : (bob: any) => T > : ^ ^^ ^^^^^ >bob : any @@ -688,8 +688,8 @@ function nonObject(generator: (bob: any) => T, receiver: (t: T) => any) {} simplified({ generator: () => 123, receiver: (t) => console.log(t + 2) }) >simplified({ generator: () => 123, receiver: (t) => console.log(t + 2) }) : void > : ^^^^ ->simplified : (props: { generator: () => T; receiver: (t: T) => any; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>simplified : (props: { generator: () => T; receiver: (t: T) => any; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ generator: () => 123, receiver: (t) => console.log(t + 2) } : { generator: () => number; receiver: (t: number) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >generator : () => number @@ -722,8 +722,8 @@ simplified({ generator: () => 123, receiver: (t) => console.log(t + 2) }) whatIWant({ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) }) >whatIWant({ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) }) : void > : ^^^^ ->whatIWant : (props: { generator: (bob: any) => T; receiver: (t: T) => any; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>whatIWant : (props: { generator: (bob: any) => T; receiver: (t: T) => any; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >{ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) } : { generator: (bob: any) => 2 | 1; receiver: (t: 2 | 1) => void; } > : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >generator : (bob: any) => 2 | 1 @@ -764,8 +764,8 @@ whatIWant({ generator: (bob) => bob ? 1 : 2, receiver: (t) => console.log(t + 2) nonObject((bob) => bob ? 1 : 2, (t) => console.log(t + 2)) >nonObject((bob) => bob ? 1 : 2, (t) => console.log(t + 2)) : void > : ^^^^ ->nonObject : (generator: (bob: any) => T, receiver: (t: T) => any) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>nonObject : (generator: (bob: any) => T, receiver: (t: T) => any) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >(bob) => bob ? 1 : 2 : (bob: any) => 2 | 1 > : ^ ^^^^^^^^^^^^^^^ >bob : any @@ -816,8 +816,8 @@ interface Opts { } function example(options: Opts) { ->example : (options: Opts) => (params: TParams) => TMapped -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>example : (options: Opts) => (params: TParams) => TMapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >options : Opts > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -870,8 +870,8 @@ interface Params { example({ >example({ fetch: (params: Params) => 123, map: (number) => String(number)}) : (params: Params) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->example : (options: Opts) => (params: TParams) => TMapped -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>example : (options: Opts) => (params: TParams) => TMapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >{ fetch: (params: Params) => 123, map: (number) => String(number)} : { fetch: (params: Params) => number; map: (number: number) => string; } > : ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -904,8 +904,8 @@ example({ example({ >example({ fetch: (params: Params, foo: number) => 123, map: (number) => String(number)}) : (params: Params) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->example : (options: Opts) => (params: TParams) => TMapped -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>example : (options: Opts) => (params: TParams) => TMapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >{ fetch: (params: Params, foo: number) => 123, map: (number) => String(number)} : { fetch: (params: Params, foo: number) => number; map: (number: number) => string; } > : ^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -940,8 +940,8 @@ example({ example({ >example({ fetch: (params: Params, foo) => 123, map: (number) => String(number)}) : (params: Params) => string > : ^ ^^^^^^^^^^^^^^^^^^^ ->example : (options: Opts) => (params: TParams) => TMapped -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ +>example : (options: Opts) => (params: TParams) => TMapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^ >{ fetch: (params: Params, foo) => 123, map: (number) => String(number)} : { fetch: (params: Params, foo: number) => number; map: (number: number) => string; } > : ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -976,8 +976,8 @@ example({ // Repro from #45255 declare const branch: ->branch : (_: { test: T; if: (t: T) => t is U; then: (u: U) => void; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>branch : (_: { test: T; if: (t: T) => t is U; then: (u: U) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ (_: { test: T, if: (t: T) => t is U, then: (u: U) => void }) => void >_ : { test: T; if: (t: T) => t is U; then: (u: U) => void; } @@ -1000,8 +1000,8 @@ declare const x: "a" | "b" branch({ >branch({ test: x, if: (t): t is "a" => t === "a", then: u => { let test1: "a" = u }}) : void > : ^^^^ ->branch : (_: { test: T; if: (t: T) => t is U; then: (u: U) => void; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>branch : (_: { test: T; if: (t: T) => t is U; then: (u: U) => void; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ test: x, if: (t): t is "a" => t === "a", then: u => { let test1: "a" = u }} : { test: "a" | "b"; if: (t: "a" | "b") => t is "a"; then: (u: "a") => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^ @@ -1056,16 +1056,16 @@ interface Props { } declare function Foo(props: Props): null; ->Foo : (props: Props) => null -> : ^ ^^ ^^ ^^^^^ +>Foo : (props: Props) => null +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >props : Props > : ^^^^^^^^ Foo({ >Foo({ ...{ a: (x) => 10, b: (arg) => { arg.toString(); }, },}) : null > : ^^^^ ->Foo : (props: Props) => null -> : ^ ^^ ^^ ^^^^^ +>Foo : (props: Props) => null +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ ...{ a: (x) => 10, b: (arg) => { arg.toString(); }, },} : { a: (x: string) => number; b: (arg: number) => void; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -1106,8 +1106,8 @@ Foo({ }); declare function nested(arg: { ->nested : (arg: { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; }) => T -> : ^ ^^ ^^ ^^^^^ +>nested : (arg: { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; } > : ^^^^^^^^ ^^^ @@ -1135,8 +1135,8 @@ const resNested = nested({ > : ^^^^^^^^ >nested({ prop: { produce: (a) => [a], consume: (arg) => arg.join(","), },}) : number[] > : ^^^^^^^^ ->nested : (arg: { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; }) => T -> : ^ ^^ ^^ ^^^^^ +>nested : (arg: { prop: { produce: (arg1: number) => T; consume: (arg2: T) => void; }; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ prop: { produce: (a) => [a], consume: (arg) => arg.join(","), },} : { prop: { produce: (a: number) => number[]; consume: (arg: number[]) => string; }; } > : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1180,8 +1180,8 @@ const resNested = nested({ }); declare function twoConsumers(arg: { ->twoConsumers : (arg: { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; }) => T -> : ^ ^^ ^^ ^^^^^ +>twoConsumers : (arg: { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; } > : ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ @@ -1210,8 +1210,8 @@ const resTwoConsumers = twoConsumers({ > : ^^^^^^^^ >twoConsumers({ a: (arg) => [arg], consume1: (arg1) => {}, consume2: (arg2) => {},}) : string[] > : ^^^^^^^^ ->twoConsumers : (arg: { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; }) => T -> : ^ ^^ ^^ ^^^^^ +>twoConsumers : (arg: { a: (arg: string) => T; consume1: (arg1: T) => void; consume2: (arg2: T) => void; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: (arg) => [arg], consume1: (arg1) => {}, consume2: (arg2) => {},} : { a: (arg: string) => string[]; consume1: (arg1: string[]) => void; consume2: (arg2: string[]) => void; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ @@ -1246,8 +1246,8 @@ const resTwoConsumers = twoConsumers({ }); declare function multipleProducersBeforeConsumers(arg: { ->multipleProducersBeforeConsumers : (arg: { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; }) => [T, T2] -> : ^ ^^ ^^ ^^ ^^^^^ +>multipleProducersBeforeConsumers : (arg: { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; }) => [T, T2] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; } > : ^^^^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ @@ -1282,8 +1282,8 @@ const resMultipleProducersBeforeConsumers = multipleProducersBeforeConsumers({ > : ^^^^^^^^^^^^^^^^^^ >multipleProducersBeforeConsumers({ a: (arg) => [arg], b: (arg) => Number(arg), consume1: (arg1) => {}, consume2: (arg2) => {},}) : [string[], number] > : ^^^^^^^^^^^^^^^^^^ ->multipleProducersBeforeConsumers : (arg: { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; }) => [T, T2] -> : ^ ^^ ^^ ^^ ^^^^^ +>multipleProducersBeforeConsumers : (arg: { a: (arg: string) => T; b: (arg: string) => T2; consume1: (arg1: T) => void; consume2: (arg2: T2) => void; }) => [T, T2] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: (arg) => [arg], b: (arg) => Number(arg), consume1: (arg1) => {}, consume2: (arg2) => {},} : { a: (arg: string) => string[]; b: (arg: string) => number; consume1: (arg1: string[]) => void; consume2: (arg2: number) => void; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ @@ -1332,8 +1332,8 @@ const resMultipleProducersBeforeConsumers = multipleProducersBeforeConsumers({ }); declare function withConditionalExpression(arg: { ->withConditionalExpression : (arg: { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; }) => [T, T2, T3] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>withConditionalExpression : (arg: { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; }) => [T, T2, T3] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; } > : ^^^^^ ^^^^^ ^^^^^ ^^^ @@ -1362,8 +1362,8 @@ const resWithConditionalExpression = withConditionalExpression({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >withConditionalExpression({ a: (arg) => [arg], b: Math.random() ? (arg) => "first" as const : (arg) => "two" as const, c: (arg) => Boolean(arg),}) : [string[], "first" | "two", boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->withConditionalExpression : (arg: { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; }) => [T, T2, T3] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>withConditionalExpression : (arg: { a: (arg1: string) => T; b: (arg2: T) => T2; c: (arg2: T2) => T3; }) => [T, T2, T3] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: (arg) => [arg], b: Math.random() ? (arg) => "first" as const : (arg) => "two" as const, c: (arg) => Boolean(arg),} : { a: (arg: string) => string[]; b: ((arg: string[]) => "first") | ((arg: string[]) => "two"); c: (arg: "first" | "two") => boolean; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1426,8 +1426,8 @@ const resWithConditionalExpression = withConditionalExpression({ }); declare function onion(arg: { ->onion : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; }) => [T, T2, T3] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>onion : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; }) => [T, T2, T3] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; } > : ^^^^^ ^^^^^^^^^^ ^^^ @@ -1466,8 +1466,8 @@ const resOnion = onion({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onion({ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), nested2: { c: (arg) => Boolean(arg), }, },}) : [string[], string, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->onion : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; }) => [T, T2, T3] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>onion : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; nested2: { c: (arg2: T2) => T3; }; }; }) => [T, T2, T3] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), nested2: { c: (arg) => Boolean(arg), }, },} : { a: (arg: string) => string[]; nested: { b: (arg: string[]) => string; nested2: { c: (arg: string) => boolean; }; }; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1532,8 +1532,8 @@ const resOnion = onion({ }); declare function onion2(arg: { ->onion2 : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; }) => [T, T2, T3, T4] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>onion2 : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; }) => [T, T2, T3, T4] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; } > : ^^^^^ ^^^^^^^^^^ ^^^ @@ -1578,8 +1578,8 @@ const resOnion2 = onion2({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >onion2({ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), c: (arg) => Number(arg), nested2: { d: (arg) => Boolean(arg), }, },}) : [string[], string, number, boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->onion2 : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; }) => [T, T2, T3, T4] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>onion2 : (arg: { a: (arg1: string) => T; nested: { b: (arg2: T) => T2; c: (arg3: T) => T3; nested2: { d: (arg4: T3) => T4; }; }; }) => [T, T2, T3, T4] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: (arg) => [arg], nested: { b: (arg) => arg.join(","), c: (arg) => Number(arg), nested2: { d: (arg) => Boolean(arg), }, },} : { a: (arg: string) => string[]; nested: { b: (arg: string[]) => string; c: (arg: string[]) => number; nested2: { d: (arg: number) => boolean; }; }; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1658,8 +1658,8 @@ const resOnion2 = onion2({ }); declare function distant(args: { ->distant : (args: { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; }) => T -> : ^ ^^ ^^ ^^^^^ +>distant : (args: { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; } > : ^^^^^^^ ^^^^^^^^^^^^ ^^^ @@ -1697,8 +1697,8 @@ const distantRes = distant({ > : ^^^^^^ >distant({ foo: { bar: { baz: { producer: (arg) => 1, }, }, }, consumer: (val) => {},}) : number > : ^^^^^^ ->distant : (args: { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; }) => T -> : ^ ^^ ^^ ^^^^^ +>distant : (args: { foo: { bar: { baz: { producer: (arg: string) => T; }; }; }; consumer: (val: T) => unknown; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ foo: { bar: { baz: { producer: (arg) => 1, }, }, }, consumer: (val) => {},} : { foo: { bar: { baz: { producer: (arg: string) => number; }; }; }; consumer: (val: number) => void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/intraExpressionInferencesJsx.types b/tests/baselines/reference/intraExpressionInferencesJsx.types index 194a4452b0040..aeb24889e1643 100644 --- a/tests/baselines/reference/intraExpressionInferencesJsx.types +++ b/tests/baselines/reference/intraExpressionInferencesJsx.types @@ -318,8 +318,8 @@ interface Props { } function Foo(props: Props) { ->Foo : (props: Props) => JSX.Element -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ +>Foo : (props: Props) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >props : Props > : ^^^^^^^^ @@ -333,8 +333,8 @@ function Foo(props: Props) { 10} b={(arg) => { arg.toString(); }}/> : JSX.Element > : ^^^^^^^^^^^ ->Foo : (props: Props) => JSX.Element -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ +>Foo : (props: Props) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ a={() => 10} >a : () => number @@ -365,8 +365,8 @@ function Foo(props: Props) { 10} b={(arg) => { arg.toString(); }}/> : JSX.Element > : ^^^^^^^^^^^ ->Foo : (props: Props) => JSX.Element -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ +>Foo : (props: Props) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ a={(x) => 10} >a : (x: string) => number @@ -399,8 +399,8 @@ function Foo(props: Props) { 10, b: (arg) => { arg.toString(); },}} /> : JSX.Element > : ^^^^^^^^^^^ ->Foo : (props: Props) => JSX.Element -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ +>Foo : (props: Props) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >{ a: (x) => 10, b: (arg) => { arg.toString(); },} : { a: (x: string) => number; b: (arg: number) => void; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/isolatedDeclarationErrorsObjects.types b/tests/baselines/reference/isolatedDeclarationErrorsObjects.types index 5eff377c54ebe..13772bd946fbd 100644 --- a/tests/baselines/reference/isolatedDeclarationErrorsObjects.types +++ b/tests/baselines/reference/isolatedDeclarationErrorsObjects.types @@ -221,8 +221,8 @@ export let oWithAccessor = { } function prop(v: T): T { return v } ->prop : (v: T) => T -> : ^ ^^ ^^ ^^^^^ +>prop : (v: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >v : T > : ^ >v : T @@ -283,8 +283,8 @@ export const oWithComputedProperties = { > : ^^^^^^ >prop(2) : 2 > : ^ ->prop : (v: T) => T -> : ^ ^^ ^^ ^^^^^ +>prop : (v: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >2 : 2 > : ^ >2 : 2 diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.js b/tests/baselines/reference/isomorphicMappedTypeInference.js index ee60e3717fec4..556573a32e0a3 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.js +++ b/tests/baselines/reference/isomorphicMappedTypeInference.js @@ -362,7 +362,7 @@ declare var g2: (...args: any[]) => { }; }; }; -declare const foo: (object: T, partial: Partial) => T; +declare const foo: (object: T, partial: Partial) => T; declare let o: { a: number; b: number; diff --git a/tests/baselines/reference/isomorphicMappedTypeInference.types b/tests/baselines/reference/isomorphicMappedTypeInference.types index 1a75f09c084a8..7662ec23df6ab 100644 --- a/tests/baselines/reference/isomorphicMappedTypeInference.types +++ b/tests/baselines/reference/isomorphicMappedTypeInference.types @@ -21,8 +21,8 @@ type Boxified = { } function box(x: T): Box { ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -36,8 +36,8 @@ function box(x: T): Box { } function unbox(x: Box): T { ->unbox : (x: Box) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (x: Box) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box > : ^^^^^^ @@ -51,8 +51,8 @@ function unbox(x: Box): T { } function boxify(obj: T): Boxified { ->boxify : (obj: T) => Boxified -> : ^ ^^ ^^ ^^^^^ +>boxify : (obj: T) => Boxified +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ @@ -81,8 +81,8 @@ function boxify(obj: T): Boxified { > : ^^^^^^^^^^^^^^^^^^^^^^^^ >box(obj[k]) : Box]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->box : (x: T_1) => Box -> : ^^^^^^ ^^ ^^^^^ +>box : (x: T_1) => Box +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj[k] : T[Extract] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : T @@ -126,8 +126,8 @@ function unboxify(obj: Boxified): T { > : ^^^^^^^^^^^^^^^^^^^^^^^^ >unbox(obj[k]) : T[Extract] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->unbox : (x: Box) => T_1 -> : ^^^^^^ ^^ ^^^^^ +>unbox : (x: Box) => T_1 +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj[k] : Boxified[Extract] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj : Boxified @@ -141,8 +141,8 @@ function unboxify(obj: Boxified): T { } function assignBoxified(obj: Boxified, values: T) { ->assignBoxified : (obj: Boxified, values: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>assignBoxified : (obj: Boxified, values: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Boxified > : ^^^^^^^^^^^ >values : T @@ -210,8 +210,8 @@ function f1() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >boxify(v) : Boxified<{ a: number; b: string; c: boolean; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->boxify : (obj: T) => Boxified -> : ^ ^^ ^^ ^^^^^ +>boxify : (obj: T) => Boxified +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >v : { a: number; b: string; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -245,8 +245,8 @@ function f2() { > : ^^^^^^^^^^^ >box(42) : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ @@ -255,8 +255,8 @@ function f2() { > : ^^^^^^^^^^^ >box("hello") : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -265,8 +265,8 @@ function f2() { > : ^^^^^^^^^^^^ >box(true) : Box > : ^^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -307,8 +307,8 @@ function f3() { > : ^^^^^^^^^^^ >box(42) : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ @@ -317,8 +317,8 @@ function f3() { > : ^^^^^^^^^^^ >box("hello") : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -327,8 +327,8 @@ function f3() { > : ^^^^^^^^^^^^ >box(true) : Box > : ^^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -336,8 +336,8 @@ function f3() { assignBoxified(b, { c: false }); >assignBoxified(b, { c: false }) : void > : ^^^^ ->assignBoxified : (obj: Boxified, values: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>assignBoxified : (obj: Boxified, values: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ c: false } : { c: false; } @@ -363,8 +363,8 @@ function f4() { > : ^^^^^^^^^^^ >box(42) : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ @@ -373,8 +373,8 @@ function f4() { > : ^^^^^^^^^^^ >box("hello") : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -383,8 +383,8 @@ function f4() { > : ^^^^^^^^^^^^ >box(true) : Box > : ^^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -396,8 +396,8 @@ function f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >boxify(unboxify(b)) : Boxified<{ a: number; b: string; c: boolean; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->boxify : (obj: T) => Boxified -> : ^ ^^ ^^ ^^^^^ +>boxify : (obj: T) => Boxified +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >unboxify(b) : { a: number; b: string; c: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify : (obj: Boxified) => T @@ -416,15 +416,15 @@ function f4() { > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ >boxify(b) : Boxified<{ a: Box; b: Box; c: Box; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->boxify : (obj: T) => Boxified -> : ^ ^^ ^^ ^^^^^ +>boxify : (obj: T) => Boxified +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } function makeRecord(obj: { [P in K]: T }) { ->makeRecord : (obj: { [P in K]: T; }) => { [P in K]: T; } -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^ +>makeRecord : (obj: { [P in K]: T; }) => { [P in K]: T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^ >obj : { [P in K]: T; } > : ^^^ ^^^^^^^^^^^^ @@ -444,8 +444,8 @@ function f5(s: string) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >makeRecord({ a: box(42), b: box("hello"), c: box(true) }) : { a: Box | Box | Box; b: Box | Box | Box; c: Box | Box | Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->makeRecord : (obj: { [P in K]: T; }) => { [P in K]: T; } -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^ +>makeRecord : (obj: { [P in K]: T; }) => { [P in K]: T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^ >{ a: box(42), b: box("hello"), c: box(true) } : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -454,8 +454,8 @@ function f5(s: string) { > : ^^^^^^^^^^^ >box(42) : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ @@ -464,8 +464,8 @@ function f5(s: string) { > : ^^^^^^^^^^^ >box("hello") : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -474,8 +474,8 @@ function f5(s: string) { > : ^^^^^^^^^^^^ >box(true) : Box > : ^^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -502,8 +502,8 @@ function f5(s: string) { } function makeDictionary(obj: { [x: string]: T }) { ->makeDictionary : (obj: { [x: string]: T; }) => { [x: string]: T; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>makeDictionary : (obj: { [x: string]: T; }) => { [x: string]: T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >obj : { [x: string]: T; } > : ^^^^^^^^^^^^^^^^^^^ >x : string @@ -525,8 +525,8 @@ function f6(s: string) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >makeDictionary({ a: box(42), b: box("hello"), c: box(true) }) : { [x: string]: Box | Box | Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->makeDictionary : (obj: { [x: string]: T; }) => { [x: string]: T; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>makeDictionary : (obj: { [x: string]: T; }) => { [x: string]: T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: box(42), b: box("hello"), c: box(true) } : { a: Box; b: Box; c: Box; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -535,8 +535,8 @@ function f6(s: string) { > : ^^^^^^^^^^^ >box(42) : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ @@ -545,8 +545,8 @@ function f6(s: string) { > : ^^^^^^^^^^^ >box("hello") : Box > : ^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -555,8 +555,8 @@ function f6(s: string) { > : ^^^^^^^^^^^^ >box(true) : Box > : ^^^^^^^^^^^^ ->box : (x: T) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (x: T) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -583,20 +583,20 @@ function f6(s: string) { } declare function validate(obj: { [P in keyof T]?: T[P] }): T; ->validate : (obj: { [P in keyof T]?: T[P]; }) => T -> : ^ ^^ ^^ ^^^^^ +>validate : (obj: { [P in keyof T]?: T[P]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { [P in keyof T]?: T[P] | undefined; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare function clone(obj: { readonly [P in keyof T]: T[P] }): T; ->clone : (obj: { readonly [P in keyof T]: T[P]; }) => T -> : ^ ^^ ^^ ^^^^^ +>clone : (obj: { readonly [P in keyof T]: T[P]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { readonly [P in keyof T]: T[P]; } > : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ declare function validateAndClone(obj: { readonly [P in keyof T]?: T[P] }): T; ->validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T -> : ^ ^^ ^^ ^^^^^ +>validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { readonly [P in keyof T]?: T[P] | undefined; } > : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -624,8 +624,8 @@ function f10(foo: Foo) { > : ^^^^^ ^^^^^^^^^^^^^^ ^^^ >validate(foo) : { a: number; readonly b: string; } > : ^^^^^ ^^^^^^^^^^^^^^ ^^^ ->validate : (obj: { [P in keyof T]?: T[P]; }) => T -> : ^ ^^ ^^ ^^^^^ +>validate : (obj: { [P in keyof T]?: T[P]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >foo : Foo > : ^^^ @@ -634,8 +634,8 @@ function f10(foo: Foo) { > : ^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ >clone(foo) : { a?: number | undefined; b: string; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ ->clone : (obj: { readonly [P in keyof T]: T[P]; }) => T -> : ^ ^^ ^^ ^^^^^ +>clone : (obj: { readonly [P in keyof T]: T[P]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >foo : Foo > : ^^^ @@ -644,8 +644,8 @@ function f10(foo: Foo) { > : ^^^^^ ^^^^^ ^^^ >validateAndClone(foo) : { a: number; b: string; } > : ^^^^^ ^^^^^ ^^^ ->validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T -> : ^ ^^ ^^ ^^^^^ +>validateAndClone : (obj: { readonly [P in keyof T]?: T[P]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >foo : Foo > : ^^^ } @@ -671,8 +671,8 @@ type Spec = { * of calling its associated function with the supplied arguments. */ declare function applySpec(obj: Spec): (...args: any[]) => T; ->applySpec : (obj: Spec) => (...args: any[]) => T -> : ^ ^^ ^^ ^^^^^ +>applySpec : (obj: Spec) => (...args: any[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : Spec > : ^^^^^^^ >args : any[] @@ -684,8 +684,8 @@ var g1 = applySpec({ > : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >applySpec({ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }}) : (...args: any[]) => { sum: number; nested: { mul: string; }; } > : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->applySpec : (obj: Spec) => (...args: any[]) => T -> : ^ ^^ ^^ ^^^^^ +>applySpec : (obj: Spec) => (...args: any[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ sum: (a: any) => 3, nested: { mul: (b: any) => "n" }} : { sum: (a: any) => number; nested: { mul: (b: any) => string; }; } > : ^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ @@ -721,8 +721,8 @@ var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); > : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >applySpec({ foo: { bar: { baz: (x: any) => true } } }) : (...args: any[]) => { foo: { bar: { baz: boolean; }; }; } > : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->applySpec : (obj: Spec) => (...args: any[]) => T -> : ^ ^^ ^^ ^^^^^ +>applySpec : (obj: Spec) => (...args: any[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ foo: { bar: { baz: (x: any) => true } } } : { foo: { bar: { baz: (x: any) => boolean; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ >foo : { bar: { baz: (x: any) => boolean; }; } @@ -744,10 +744,10 @@ var g2 = applySpec({ foo: { bar: { baz: (x: any) => true } } }); // Repro from #12633 const foo = (object: T, partial: Partial) => object; ->foo : (object: T, partial: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ->(object: T, partial: Partial) => object : (object: T, partial: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ +>foo : (object: T, partial: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>(object: T, partial: Partial) => object : (object: T, partial: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >object : T > : ^ >partial : Partial @@ -772,8 +772,8 @@ let o = {a: 5, b: 7}; foo(o, {b: 9}); >foo(o, {b: 9}) : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (object: T, partial: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ +>foo : (object: T, partial: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >o : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >{b: 9} : { b: number; } @@ -790,8 +790,8 @@ o = foo(o, {b: 9}); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(o, {b: 9}) : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (object: T, partial: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ +>foo : (object: T, partial: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >o : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >{b: 9} : { b: number; } @@ -805,32 +805,32 @@ o = foo(o, {b: 9}); // inferring to { [P in keyof T]: X }. declare function f20(obj: Pick): T; ->f20 : (obj: Pick) => T -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f20 : (obj: Pick) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^ declare function f21(obj: Pick): K; ->f21 : (obj: Pick) => K -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f21 : (obj: Pick) => K +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^ declare function f22(obj: Boxified>): T; ->f22 : (obj: Boxified>) => T -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f22 : (obj: Boxified>) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Boxified> > : ^^^^^^^^^^^^^^^^^^^^ declare function f23(obj: Pick): T; ->f23 : (obj: Pick) => T -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f23 : (obj: Pick) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^ declare function f24(obj: Pick): T & U; ->f24 : (obj: Pick) => T & U -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f24 : (obj: Pick) => T & U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : Pick > : ^^^^^^^^^^^^^^ @@ -839,8 +839,8 @@ let x0 = f20({ foo: 42, bar: "hello" }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f20({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f20 : (obj: Pick) => T -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f20 : (obj: Pick) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -857,8 +857,8 @@ let x1 = f21({ foo: 42, bar: "hello" }); > : ^^^^^^^^^^^^^ >f21({ foo: 42, bar: "hello" }) : "foo" | "bar" > : ^^^^^^^^^^^^^ ->f21 : (obj: Pick) => K -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f21 : (obj: Pick) => K +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -875,8 +875,8 @@ let x2 = f22({ foo: { value: 42} , bar: { value: "hello" } }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f22({ foo: { value: 42} , bar: { value: "hello" } }) : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f22 : (obj: Boxified>) => T -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f22 : (obj: Boxified>) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ foo: { value: 42} , bar: { value: "hello" } } : { foo: { value: number; }; bar: { value: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : { value: number; } @@ -901,8 +901,8 @@ let x3 = f23({ foo: 42, bar: "hello" }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f23({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f23 : (obj: Pick) => T -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f23 : (obj: Pick) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -919,8 +919,8 @@ let x4 = f24({ foo: 42, bar: "hello" }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f24({ foo: 42, bar: "hello" }) : { foo: number; bar: string; } & { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f24 : (obj: Pick) => T & U -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>f24 : (obj: Pick) => T & U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{ foo: 42, bar: "hello" } : { foo: number; bar: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : number @@ -935,8 +935,8 @@ let x4 = f24({ foo: 42, bar: "hello" }); // Repro from #29765 function getProps(obj: T, list: K[]): Pick { ->getProps : (obj: T, list: K[]) => Pick -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getProps : (obj: T, list: K[]) => Pick +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >list : K[] @@ -958,8 +958,8 @@ const o1 = getProps(myAny, ['foo', 'bar']); > : ^^^^^^^^^^^^^^^^^^^^^^^^ >getProps(myAny, ['foo', 'bar']) : Pick > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->getProps : (obj: T, list: K[]) => Pick -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getProps : (obj: T, list: K[]) => Pick +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >myAny : any >['foo', 'bar'] : ("foo" | "bar")[] > : ^^^^^^^^^^^^^^^^^ @@ -975,8 +975,8 @@ const o2: { foo: any; bar: any } = getProps(myAny, ['foo', 'bar']); >bar : any >getProps(myAny, ['foo', 'bar']) : Pick > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->getProps : (obj: T, list: K[]) => Pick -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getProps : (obj: T, list: K[]) => Pick +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >myAny : any >['foo', 'bar'] : ("foo" | "bar")[] > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types b/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types index 696688eb1ec20..3bf4e55c9d0a9 100644 --- a/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types +++ b/tests/baselines/reference/jsDeclarationsJSDocRedirectedLookups.types @@ -67,12 +67,12 @@ > : ^^^^^^^^^^^^ >Promise.resolve(0) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >0 : 0 > : ^ diff --git a/tests/baselines/reference/jsFileImportPreservedWhenUsed.types b/tests/baselines/reference/jsFileImportPreservedWhenUsed.types index c5f04d99d2539..7968dfdd6a8b4 100644 --- a/tests/baselines/reference/jsFileImportPreservedWhenUsed.types +++ b/tests/baselines/reference/jsFileImportPreservedWhenUsed.types @@ -13,8 +13,8 @@ type ObjectIterator = (value: TObject[keyof TObject], key: str interface LoDashStatic { mapValues(obj: T | null | undefined, callback: ObjectIterator): { [P in keyof T]: TResult }; ->mapValues : (obj: T | null | undefined, callback: ObjectIterator) => { [P in keyof T]: TResult; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>mapValues : (obj: T | null | undefined, callback: ObjectIterator) => { [P in keyof T]: TResult; } +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^ >callback : ObjectIterator @@ -76,12 +76,12 @@ export class Test { > : ^^^ >_.mapValues( obj, object => ({ ...object, [INDEX_FIELD]: index++ }), ) : object > : ^^^^^^ ->_.mapValues : (obj: T | null | undefined, callback: (value: T[keyof T], key: string, collection: T) => TResult) => { [P in keyof T]: TResult; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>_.mapValues : (obj: T | null | undefined, callback: (value: T[keyof T], key: string, collection: T) => TResult) => { [P in keyof T]: TResult; } +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >_ : LoDashStatic > : ^^^^^^^^^^^^ ->mapValues : (obj: T | null | undefined, callback: (value: T[keyof T], key: string, collection: T) => TResult) => { [P in keyof T]: TResult; } -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>mapValues : (obj: T | null | undefined, callback: (value: T[keyof T], key: string, collection: T) => TResult) => { [P in keyof T]: TResult; } +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ obj, >obj : object diff --git a/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types b/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types index 43c2402418db4..7e8ddbcbe7f51 100644 --- a/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types +++ b/tests/baselines/reference/jsdocArrayObjectPromiseImplicitAny.types @@ -40,12 +40,12 @@ var anyPromise = Promise.resolve(5); > : ^^^^^^^^^^^^ >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >5 : 5 > : ^ @@ -55,12 +55,12 @@ var numberPromise = Promise.resolve(5); > : ^^^^^^^^^^^^^^^ >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types b/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types index 8e70490b022b8..787b99e11a574 100644 --- a/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types +++ b/tests/baselines/reference/jsdocArrayObjectPromiseNoImplicitAny.types @@ -40,12 +40,12 @@ var notAnyPromise = Promise.resolve(5); > : ^^^^^^^^^^^^ >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >5 : 5 > : ^ @@ -55,12 +55,12 @@ var numberPromise = Promise.resolve(5); > : ^^^^^^^^^^^^^^^ >Promise.resolve(5) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >5 : 5 > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag6.types b/tests/baselines/reference/jsdocTemplateTag6.types index bddbe9f9979e5..962bbae269142 100644 --- a/tests/baselines/reference/jsdocTemplateTag6.types +++ b/tests/baselines/reference/jsdocTemplateTag6.types @@ -7,8 +7,8 @@ * @returns {T} */ function f1(x) { ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -21,8 +21,8 @@ const t1 = f1("a"); > : ^^^ >f1("a") : "a" > : ^^^ ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"a" : "a" > : ^^^ @@ -31,8 +31,8 @@ const t2 = f1(["a", ["b", "c"]]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f1(["a", ["b", "c"]]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >["a", ["b", "c"]] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >"a" : "a" @@ -49,8 +49,8 @@ const t3 = f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : 1 @@ -84,8 +84,8 @@ const t3 = f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); * @returns {T} */ function f2(x) { ->f2 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -99,8 +99,8 @@ const t4 = f2('a'); > : ^^^ >f2('a') : "a" > : ^^^ ->f2 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'a' : "a" > : ^^^ @@ -109,8 +109,8 @@ const t5 = f2(['a', ['b', 'c']]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2(['a', ['b', 'c']]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f2 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >['a', ['b', 'c']] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -127,8 +127,8 @@ const t6 = f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f2 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : 1 @@ -162,8 +162,8 @@ const t6 = f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); * @returns {T[]} */ function f3(x) { ->f3 : (x: T) => T[] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f3 : (x: T) => T[] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -178,8 +178,8 @@ const t7 = f3("hello"); > : ^^^^^^^^^ >f3("hello") : "hello"[] > : ^^^^^^^^^ ->f3 : (x: T) => T[] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f3 : (x: T) => T[] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -188,8 +188,8 @@ const t8 = f3("hello"); > : ^^^^^^^^^ >f3("hello") : "hello"[] > : ^^^^^^^^^ ->f3 : (x: T) => T[] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f3 : (x: T) => T[] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -199,8 +199,8 @@ const t8 = f3("hello"); * @returns {T} */ function f4(x) { ->f4 : (x: [T, T]) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f4 : (x: [T, T]) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : [T, T] > : ^^^^^^ @@ -217,8 +217,8 @@ const t9 = f4([[1, "x"], [2, "y"]]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4([[1, "x"], [2, "y"]]) : readonly [1, "x"] | readonly [2, "y"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f4 : (x: [T, T]) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f4 : (x: [T, T]) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[1, "x"], [2, "y"]] : [[1, "x"], [2, "y"]] > : ^^^^^^^^^^^^^^^^^^^^ >[1, "x"] : [1, "x"] @@ -239,8 +239,8 @@ const t10 = f4([{ a: 1, b: "x" }, { a: 2, b: "y" }]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4([{ a: 1, b: "x" }, { a: 2, b: "y" }]) : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f4 : (x: [T, T]) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f4 : (x: [T, T]) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[{ a: 1, b: "x" }, { a: 2, b: "y" }] : [{ a: 1; b: "x"; }, { a: 2; b: "y"; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, b: "x" } : { a: 1; b: "x"; } @@ -270,8 +270,8 @@ const t10 = f4([{ a: 1, b: "x" }, { a: 2, b: "y" }]); * @returns {T} */ function f5(obj) { ->f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f5 : (obj: { x: T; y: T; }) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { x: T; y: T; } > : ^^^^^ ^^^^^ ^^^ @@ -288,8 +288,8 @@ const t11 = f5({ x: [1, "x"], y: [2, "y"] }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5({ x: [1, "x"], y: [2, "y"] }) : readonly [1, "x"] | readonly [2, "y"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f5 : (obj: { x: T; y: T; }) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ x: [1, "x"], y: [2, "y"] } : { x: [1, "x"]; y: [2, "y"]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : [1, "x"] @@ -314,8 +314,8 @@ const t12 = f5({ x: { a: 1, b: "x" }, y: { a: 2, b: "y" } }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5({ x: { a: 1, b: "x" }, y: { a: 2, b: "y" } }) : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f5 : (obj: { x: T; y: T; }) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ x: { a: 1, b: "x" }, y: { a: 2, b: "y" } } : { x: { a: 1; b: "x"; }; y: { a: 2; b: "y"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { a: 1; b: "x"; } @@ -362,8 +362,8 @@ class C { * @param {U} x */ foo(x) { ->foo : (x: U) => U -> : ^^^^^^^ ^^ ^^ ^^^^^^ +>foo : (x: U) => U +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : U > : ^ @@ -412,12 +412,12 @@ const t14 = t13.foo(["a", ["b", "c"]]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t13.foo(["a", ["b", "c"]]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->t13.foo : (x: U) => U -> : ^^^^^^^ ^^ ^^^^^^^^^ +>t13.foo : (x: U) => U +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >t13 : C<{ readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (x: U) => U -> : ^^^^^^^ ^^ ^^^^^^^^^ +>foo : (x: U) => U +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >["a", ["b", "c"]] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >"a" : "a" diff --git a/tests/baselines/reference/jsdocTemplateTag7.types b/tests/baselines/reference/jsdocTemplateTag7.types index fea980eebeae2..f8ab7ac7c4f2f 100644 --- a/tests/baselines/reference/jsdocTemplateTag7.types +++ b/tests/baselines/reference/jsdocTemplateTag7.types @@ -19,8 +19,8 @@ class C { } * @returns {T} */ function f(x) { ->f : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/jsdocTemplateTag8.types b/tests/baselines/reference/jsdocTemplateTag8.types index aab64d6471ef7..08c5931cb3ab4 100644 --- a/tests/baselines/reference/jsdocTemplateTag8.types +++ b/tests/baselines/reference/jsdocTemplateTag8.types @@ -160,8 +160,8 @@ sub_invariant = super_invariant; // Error * @param {T} x */ function f(x) {} ->f : (x: T) => void -> : ^^^^ ^^ ^^ ^^^^^^^^^ +>f : (x: T) => void +> : ^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/jsxChildrenGenericContextualTypes.types b/tests/baselines/reference/jsxChildrenGenericContextualTypes.types index 4d86c765cc2e3..f4f4083ba6223 100644 --- a/tests/baselines/reference/jsxChildrenGenericContextualTypes.types +++ b/tests/baselines/reference/jsxChildrenGenericContextualTypes.types @@ -17,10 +17,10 @@ namespace JSX { > : ^^^^^^ } const Elem = (p: { prop: T, children: (t: T) => T }) =>

; ->Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ ->(p: { prop: T, children: (t: T) => T }) =>
: (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ +>Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ +>(p: { prop: T, children: (t: T) => T }) =>
: (p: { prop: T; children: (t: T) => T; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >p : { prop: T; children: (t: T) => T; } > : ^^^^^^^^ ^^^^^^^^^^^^ ^^^ >prop : T @@ -39,8 +39,8 @@ const Elem = (p: { prop: T, children: (t: T) => T }) =>
; Elem({prop: {a: "x"}, children: i => ({a: "z"})}); >Elem({prop: {a: "x"}, children: i => ({a: "z"})}) : JSX.Element > : ^^^^^^^^^^^ ->Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ +>Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >{prop: {a: "x"}, children: i => ({a: "z"})} : { prop: { a: string; }; children: (i: { a: string; }) => { a: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >prop : { a: string; } @@ -71,8 +71,8 @@ const q = ({a: "z"})} /> > : ^^^^^^^^^^^ > ({a: "z"})} /> : JSX.Element > : ^^^^^^^^^^^ ->Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ +>Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : { a: string; } > : ^^^^^^^^^^^^^^ >{a: "x"} : { a: string; } @@ -101,8 +101,8 @@ const qq = {i => ({a: "z"})} > : ^^^^^^^^^^^ >{i => ({a: "z"})} : JSX.Element > : ^^^^^^^^^^^ ->Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ +>Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ >prop : { a: string; } > : ^^^^^^^^^^^^^^ >{a: "x"} : { a: string; } @@ -123,8 +123,8 @@ const qq = {i => ({a: "z"})} > : ^^^^^^ >"z" : "z" > : ^^^ ->Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element -> : ^ ^^ ^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ +>Elem : (p: { prop: T; children: (t: T) => T; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ interface LitProps { prop: T, children: (x: this) => T } >prop : T diff --git a/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types b/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types index 0cb120d89a2bb..64cd89c34cf03 100644 --- a/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types +++ b/tests/baselines/reference/jsxGenericComponentWithSpreadingResultOfGenericFunction.types @@ -12,16 +12,16 @@ Symbol count: 50,000 // repro #51577 declare function omit(names: readonly K[], obj: T): Omit; ->omit : { (names: readonly K[], obj: T): Omit; (names: readonly K_1[]): (obj: T_1) => Omit; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>omit : { (names: readonly K[], obj: T): Omit; (names: readonly K_1[]): (obj: T_1) => Omit; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ >names : readonly K[] > : ^^^^^^^^^^^^ >obj : T > : ^ declare function omit(names: readonly K[]): (obj: T) => Omit; ->omit : { (names: readonly K_1[], obj: T): Omit; (names: readonly K[]): (obj: T) => Omit; } -> : ^^^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>omit : { (names: readonly K_1[], obj: T): Omit; (names: readonly K[]): (obj: T) => Omit; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >names : readonly K[] > : ^^^^^^^^^^^^ >obj : T @@ -36,20 +36,20 @@ declare const otherProps: { bar: string, qwe: boolean } > : ^^^^^^^ declare function GenericComponent(props: T): null ->GenericComponent : (props: T) => null -> : ^ ^^ ^^ ^^^^^ +>GenericComponent : (props: T) => null +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >props : T > : ^ ; // no error > : JSX.Element > : ^^^^^^^^^^^ ->GenericComponent : (props: T) => null -> : ^ ^^ ^^ ^^^^^ +>GenericComponent : (props: T) => null +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >omit(['bar'], otherProps) : Omit<{ bar: string; qwe: boolean; }, "bar"> > : ^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^ ->omit : { (names: readonly K[], obj: T): Omit; (names: readonly K[]): (obj: T) => Omit; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>omit : { (names: readonly K[], obj: T): Omit; (names: readonly K[]): (obj: T) => Omit; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >['bar'] : "bar"[] > : ^^^^^^^ >'bar' : "bar" diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types index 6c9f967278f60..5f310be0892c1 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsx).types @@ -93,16 +93,16 @@ console.log( {[1, 2].map(i =>
{i}
)} >[1, 2].map(i =>
{i}
) : JSX.Element[] > : ^^^^^^^^^^^^^ ->[1, 2].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 > : ^ >2 : 2 > : ^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >i =>
{i}
: (i: number) => JSX.Element > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >i : number diff --git a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types index 6c9f967278f60..5f310be0892c1 100644 --- a/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types +++ b/tests/baselines/reference/jsxJsxsCjsTransformNestedSelfClosingChild(jsx=react-jsxdev).types @@ -93,16 +93,16 @@ console.log( {[1, 2].map(i =>
{i}
)} >[1, 2].map(i =>
{i}
) : JSX.Element[] > : ^^^^^^^^^^^^^ ->[1, 2].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2] : number[] > : ^^^^^^^^ >1 : 1 > : ^ >2 : 2 > : ^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >i =>
{i}
: (i: number) => JSX.Element > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >i : number diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexport.types b/tests/baselines/reference/jsxNamespaceGlobalReexport.types index d6ff90ada805e..d76a3e5ef0b82 100644 --- a/tests/baselines/reference/jsxNamespaceGlobalReexport.types +++ b/tests/baselines/reference/jsxNamespaceGlobalReexport.types @@ -110,8 +110,8 @@ import { JSXInternal } from '..'; > : ^^^ export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -137,8 +137,8 @@ export function jsx( ): VNode; export function jsx

( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

@@ -157,8 +157,8 @@ export function jsx

( ): VNode; export function jsxs( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -184,8 +184,8 @@ export function jsxs( ): VNode; export function jsxs

( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

@@ -204,8 +204,8 @@ export function jsxs

( ): VNode; export function jsxDEV( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -231,8 +231,8 @@ export function jsxDEV( ): VNode; export function jsxDEV

( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

diff --git a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types index 7ff93c4e7795c..403a569cbf9df 100644 --- a/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types +++ b/tests/baselines/reference/jsxNamespaceGlobalReexportMissingAliasTarget.types @@ -113,8 +113,8 @@ import { JSXInternal } from '..'; > : ^^^ export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -140,8 +140,8 @@ export function jsx( ): VNode; export function jsx

( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

@@ -160,8 +160,8 @@ export function jsx

( ): VNode; export function jsxs( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -187,8 +187,8 @@ export function jsxs( ): VNode; export function jsxs

( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

@@ -207,8 +207,8 @@ export function jsxs

( ): VNode; export function jsxDEV( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -234,8 +234,8 @@ export function jsxDEV( ): VNode; export function jsxDEV

( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

diff --git a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types index f18a7fb36da87..735b3d04beabe 100644 --- a/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types +++ b/tests/baselines/reference/jsxNamespaceImplicitImportJSXNamespace.types @@ -110,8 +110,8 @@ import { JSXInternal } from '..'; > : ^^^ export function jsx( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -137,8 +137,8 @@ export function jsx( ): VNode; export function jsx

( ->jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsx : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

@@ -158,8 +158,8 @@ export function jsx

( export function jsxs( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -185,8 +185,8 @@ export function jsxs( ): VNode; export function jsxs

( ->jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxs : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChild[]; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChild[]; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

@@ -206,8 +206,8 @@ export function jsxs

( export function jsxDEV( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: string, >type : string @@ -233,8 +233,8 @@ export function jsxDEV( ): VNode; export function jsxDEV

( ->jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>jsxDEV : { (type: string, props: JSXInternal.HTMLAttributes & JSXInternal.SVGAttributes & Record & { children?: ComponentChildren; }, key?: string): VNode;

(type: ComponentType

, props: Attributes & P & { children?: ComponentChildren; }, key?: string): VNode; } +> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ type: ComponentType

, >type : ComponentType

diff --git a/tests/baselines/reference/keyofAndIndexedAccess.errors.txt b/tests/baselines/reference/keyofAndIndexedAccess.errors.txt index e833106df6fe5..322f18208142c 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.errors.txt +++ b/tests/baselines/reference/keyofAndIndexedAccess.errors.txt @@ -343,7 +343,6 @@ keyofAndIndexedAccess.ts(318,5): error TS2322: Type 'T[K]' is not assignable to a = x; ~ !!! error TS2322: Type 'T' is not assignable to type '{}'. -!!! related TS2208 keyofAndIndexedAccess.ts:314:14: This type parameter might need an `extends {}` constraint. a = y; ~ !!! error TS2322: Type 'T[keyof T]' is not assignable to type '{}'. diff --git a/tests/baselines/reference/keyofAndIndexedAccess.js b/tests/baselines/reference/keyofAndIndexedAccess.js index ea10cf32f5e50..7eba0555bb95f 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.js +++ b/tests/baselines/reference/keyofAndIndexedAccess.js @@ -1266,7 +1266,7 @@ type Thing = { b: boolean; }; declare function f1(thing: Thing): void; -declare const assignTo2: (object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => T[K1][K2]; +declare const assignTo2: (object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => T[K1][K2]; declare function one(handler: (t: T) => void): T; declare var empty: unknown; type Handlers = { diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index b2a181563045a..1801077cbb3c7 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -255,8 +255,8 @@ declare let cond: boolean; > : ^^^^^^^ function getProperty(obj: T, key: K) { ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -272,8 +272,8 @@ function getProperty(obj: T, key: K) { } function setProperty(obj: T, key: K, value: T[K]) { ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -305,8 +305,8 @@ function f10(shape: Shape) { > : ^^^^^^ >getProperty(shape, "name") : string > : ^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >shape : Shape > : ^^^^^ >"name" : "name" @@ -317,8 +317,8 @@ function f10(shape: Shape) { > : ^^^^^^ >getProperty(shape, cond ? "width" : "height") : number > : ^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >shape : Shape > : ^^^^^ >cond ? "width" : "height" : "width" | "height" @@ -335,8 +335,8 @@ function f10(shape: Shape) { > : ^^^^^^^^^^^^^^^^ >getProperty(shape, cond ? "name" : "visible") : string | boolean > : ^^^^^^^^^^^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >shape : Shape > : ^^^^^ >cond ? "name" : "visible" : "name" | "visible" @@ -351,8 +351,8 @@ function f10(shape: Shape) { setProperty(shape, "name", "rectangle"); >setProperty(shape, "name", "rectangle") : void > : ^^^^ ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >shape : Shape > : ^^^^^ >"name" : "name" @@ -363,8 +363,8 @@ function f10(shape: Shape) { setProperty(shape, cond ? "width" : "height", 10); >setProperty(shape, cond ? "width" : "height", 10) : void > : ^^^^ ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >shape : Shape > : ^^^^^ >cond ? "width" : "height" : "width" | "height" @@ -381,8 +381,8 @@ function f10(shape: Shape) { setProperty(shape, cond ? "name" : "visible", true); // Technically not safe >setProperty(shape, cond ? "name" : "visible", true) : void > : ^^^^ ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >shape : Shape > : ^^^^^ >cond ? "name" : "visible" : "name" | "visible" @@ -408,8 +408,8 @@ function f11(a: Shape[]) { > : ^^^^^^ >getProperty(a, "length") : number > : ^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Shape[] > : ^^^^^^^ >"length" : "length" @@ -418,8 +418,8 @@ function f11(a: Shape[]) { setProperty(a, "length", len); >setProperty(a, "length", len) : void > : ^^^^ ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >a : Shape[] > : ^^^^^^^ >"length" : "length" @@ -439,8 +439,8 @@ function f12(t: [Shape, boolean]) { > : ^ >getProperty(t, "length") : 2 > : ^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : [Shape, boolean] > : ^^^^^^^^^^^^^^^^ >"length" : "length" @@ -451,8 +451,8 @@ function f12(t: [Shape, boolean]) { > : ^^^^^ >getProperty(t, "0") : Shape > : ^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : [Shape, boolean] > : ^^^^^^^^^^^^^^^^ >"0" : "0" @@ -463,8 +463,8 @@ function f12(t: [Shape, boolean]) { > : ^^^^^^^ >getProperty(t, "1") : boolean > : ^^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : [Shape, boolean] > : ^^^^^^^^^^^^^^^^ >"1" : "1" @@ -484,8 +484,8 @@ function f13(foo: any, bar: any) { > : ^^^ >getProperty(foo, "x") : any > : ^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : any > : ^^^ >"x" : "x" @@ -496,8 +496,8 @@ function f13(foo: any, bar: any) { > : ^^^ >getProperty(foo, "100") : any > : ^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : any > : ^^^ >"100" : "100" @@ -508,8 +508,8 @@ function f13(foo: any, bar: any) { > : ^^^ >getProperty(foo, bar) : any > : ^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : any > : ^^^ >bar : any @@ -684,8 +684,8 @@ function f20(component: Component) { } function pluck(array: T[], key: K) { ->pluck : (array: T[], key: K) => T[K][] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ +>pluck : (array: T[], key: K) => T[K][] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >array : T[] > : ^^^ >key : K @@ -694,12 +694,12 @@ function pluck(array: T[], key: K) { return array.map(x => x[key]); >array.map(x => x[key]) : T[K][] > : ^^^^^^ ->array.map : (callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>array.map : (callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >array : T[] > : ^^^ ->map : (callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x[key] : (x: T) => T[K] > : ^ ^^^^^^^^^^^^ >x : T @@ -723,8 +723,8 @@ function f30(shapes: Shape[]) { > : ^^^^^^^^ >pluck(shapes, "name") : string[] > : ^^^^^^^^ ->pluck : (array: T[], key: K) => T[K][] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ +>pluck : (array: T[], key: K) => T[K][] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >shapes : Shape[] > : ^^^^^^^ >"name" : "name" @@ -735,8 +735,8 @@ function f30(shapes: Shape[]) { > : ^^^^^^^^ >pluck(shapes, "width") : number[] > : ^^^^^^^^ ->pluck : (array: T[], key: K) => T[K][] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ +>pluck : (array: T[], key: K) => T[K][] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >shapes : Shape[] > : ^^^^^^^ >"width" : "width" @@ -747,8 +747,8 @@ function f30(shapes: Shape[]) { > : ^^^^^^^^^^^^^^^^^^^^ >pluck(shapes, cond ? "name" : "visible") : (string | boolean)[] > : ^^^^^^^^^^^^^^^^^^^^ ->pluck : (array: T[], key: K) => T[K][] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ +>pluck : (array: T[], key: K) => T[K][] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >shapes : Shape[] > : ^^^^^^^ >cond ? "name" : "visible" : "name" | "visible" @@ -848,8 +848,8 @@ function f33(shape: S, key: K) { > : ^^^^^^^^^ >getProperty(shape, "name") : S["name"] > : ^^^^^^^^^ ->getProperty : (obj: T, key: K_1) => T[K_1] -> : ^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ +>getProperty : (obj: T, key: K_1) => T[K_1] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >shape : S > : ^ >"name" : "name" @@ -860,8 +860,8 @@ function f33(shape: S, key: K) { > : ^^^^ >getProperty(shape, key) : S[K] > : ^^^^ ->getProperty : (obj: T, key: K_1) => T[K_1] -> : ^ ^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ +>getProperty : (obj: T, key: K_1) => T[K_1] +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >shape : S > : ^ >key : K @@ -895,8 +895,8 @@ function f34(ts: TaggedShape) { > : ^^^^^^ >getProperty(ts, "tag") : string > : ^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >ts : TaggedShape > : ^^^^^^^^^^^ >"tag" : "tag" @@ -972,8 +972,8 @@ function f40(c: C) { } function f50(k: keyof T, s: string) { ->f50 : (k: keyof T, s: string) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f50 : (k: keyof T, s: string) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >k : keyof T > : ^^^^^^^ >s : string @@ -997,8 +997,8 @@ function f50(k: keyof T, s: string) { } function f51(k: K, s: string) { ->f51 : (k: K, s: string) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f51 : (k: K, s: string) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >k : K > : ^ >s : string @@ -1022,8 +1022,8 @@ function f51(k: K, s: string) { } function f52(obj: { [x: string]: boolean }, k: Exclude, s: string, n: number) { ->f52 : (obj: { [x: string]: boolean; }, k: Exclude, s: string, n: number) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f52 : (obj: { [x: string]: boolean; }, k: Exclude, s: string, n: number) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : { [x: string]: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string @@ -1067,8 +1067,8 @@ function f52(obj: { [x: string]: boolean }, k: Exclude, s: s } function f53>(obj: { [x: string]: boolean }, k: K, s: string, n: number) { ->f53 : >(obj: { [x: string]: boolean; }, k: K, s: string, n: number) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f53 : >(obj: { [x: string]: boolean; }, k: K, s: string, n: number) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : { [x: string]: boolean; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string @@ -1112,8 +1112,8 @@ function f53>(obj: { [x: string]: boolean } function f54(obj: T, key: keyof T) { ->f54 : (obj: T, key: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f54 : (obj: T, key: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : keyof T @@ -1145,8 +1145,8 @@ function f54(obj: T, key: keyof T) { } function f55(obj: T, key: K) { ->f55 : (obj: T, key: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f55 : (obj: T, key: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >key : K @@ -1178,8 +1178,8 @@ function f55(obj: T, key: K) { } function f60(source: T, target: T) { ->f60 : (source: T, target: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f60 : (source: T, target: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >source : T > : ^ >target : T @@ -1212,8 +1212,8 @@ function f60(source: T, target: T) { function f70(func: (k1: keyof (T | U), k2: keyof (T & U)) => void) { >f70 : (func: (k1: keyof (T | U), k2: keyof (T & U)) => void) => void > : ^ ^^ ^^^^^^^^^ ->func : (k1: keyof (T | U), k2: keyof (T & U)) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >k1 : keyof T & keyof U > : ^^^^^^^^^^^^^^^^^ >k2 : keyof T | keyof U @@ -1222,8 +1222,8 @@ function f70(func: (k1: keyof (T | U), k2: keyof (T & U)) => void) { func<{ a: any, b: any }, { a: any, c: any }>('a', 'a'); >func<{ a: any, b: any }, { a: any, c: any }>('a', 'a') : void > : ^^^^ ->func : (k1: keyof (T | U), k2: keyof (T & U)) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : any > : ^^^ >b : any @@ -1240,8 +1240,8 @@ function f70(func: (k1: keyof (T | U), k2: keyof (T & U)) => void) { func<{ a: any, b: any }, { a: any, c: any }>('a', 'b'); >func<{ a: any, b: any }, { a: any, c: any }>('a', 'b') : void > : ^^^^ ->func : (k1: keyof (T | U), k2: keyof (T & U)) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : any > : ^^^ >b : any @@ -1258,8 +1258,8 @@ function f70(func: (k1: keyof (T | U), k2: keyof (T & U)) => void) { func<{ a: any, b: any }, { a: any, c: any }>('a', 'c'); >func<{ a: any, b: any }, { a: any, c: any }>('a', 'c') : void > : ^^^^ ->func : (k1: keyof (T | U), k2: keyof (T & U)) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (k1: keyof (T | U), k2: keyof (T & U)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : any > : ^^^ >b : any @@ -1277,8 +1277,8 @@ function f70(func: (k1: keyof (T | U), k2: keyof (T & U)) => void) { function f71(func: (x: T, y: U) => Partial) { >f71 : (func: (x: T, y: U) => Partial) => void > : ^ ^^ ^^^^^^^^^ ->func : (x: T, y: U) => Partial -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U) => Partial +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -1289,8 +1289,8 @@ function f71(func: (x: T, y: U) => Partial) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >func({ a: 1, b: "hello" }, { c: true }) : Partial<{ a: number; b: string; } & { c: boolean; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->func : (x: T, y: U) => Partial -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U) => Partial +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1336,8 +1336,8 @@ function f71(func: (x: T, y: U) => Partial) { function f72(func: (x: T, y: U, k: K) => (T & U)[K]) { >f72 : (func: (x: T, y: U, k: K) => (T & U)[K]) => void > : ^ ^^ ^^^^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -1350,8 +1350,8 @@ function f72(func: (x: T, y: U, k: K) => (T & > : ^^^^^^ >func({ a: 1, b: "hello" }, { c: true }, 'a') : number > : ^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1376,8 +1376,8 @@ function f72(func: (x: T, y: U, k: K) => (T & > : ^^^^^^ >func({ a: 1, b: "hello" }, { c: true }, 'b') : string > : ^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1402,8 +1402,8 @@ function f72(func: (x: T, y: U, k: K) => (T & > : ^^^^^^^ >func({ a: 1, b: "hello" }, { c: true }, 'c') : boolean > : ^^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1427,8 +1427,8 @@ function f72(func: (x: T, y: U, k: K) => (T & function f73(func: (x: T, y: U, k: K) => (T & U)[K]) { >f73 : (func: (x: T, y: U, k: K) => (T & U)[K]) => void > : ^ ^^ ^^^^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -1441,8 +1441,8 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ > : ^^^^^^ >func({ a: 1, b: "hello" }, { c: true }, 'a') : number > : ^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1467,8 +1467,8 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ > : ^^^^^^ >func({ a: 1, b: "hello" }, { c: true }, 'b') : string > : ^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1493,8 +1493,8 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ > : ^^^^^^^ >func({ a: 1, b: "hello" }, { c: true }, 'c') : boolean > : ^^^^^^^ ->func : (x: T, y: U, k: K) => (T & U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T & U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1518,8 +1518,8 @@ function f73(func: (x: T, y: U, k: K) => (T & U)[ function f74(func: (x: T, y: U, k: K) => (T | U)[K]) { >f74 : (func: (x: T, y: U, k: K) => (T | U)[K]) => void > : ^ ^^ ^^^^^^^^^ ->func : (x: T, y: U, k: K) => (T | U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T | U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : U @@ -1532,8 +1532,8 @@ function f74(func: (x: T, y: U, k: K) => (T | U)[ > : ^^^^^^ >func({ a: 1, b: "hello" }, { a: 2, b: true }, 'a') : number > : ^^^^^^ ->func : (x: T, y: U, k: K) => (T | U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T | U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1562,8 +1562,8 @@ function f74(func: (x: T, y: U, k: K) => (T | U)[ > : ^^^^^^^^^^^^^^^^ >func({ a: 1, b: "hello" }, { a: 2, b: true }, 'b') : string | boolean > : ^^^^^^^^^^^^^^^^ ->func : (x: T, y: U, k: K) => (T | U)[K] -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>func : (x: T, y: U, k: K) => (T | U)[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ a: 1, b: "hello" } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -1898,8 +1898,8 @@ class C1 { > : ^^^^^^^^^ >getProperty(this, "x") : this["x"] > : ^^^^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >"x" : "x" @@ -1946,8 +1946,8 @@ class C1 { setProperty(this, "x", 42); >setProperty(this, "x", 42) : void > : ^^^^ ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >"x" : "x" @@ -2055,8 +2055,8 @@ function f90(x1: S2[keyof S2], x2: T[keyof S2] } function f91(x: T, y: T[keyof T], z: T[K]) { ->f91 : (x: T, y: T[keyof T], z: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f91 : (x: T, y: T[keyof T], z: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : T[keyof T] @@ -2094,8 +2094,8 @@ function f91(x: T, y: T[keyof T], z: T[K]) { } function f92(x: T, y: T[keyof T], z: T[K]) { ->f92 : (x: T, y: T[keyof T], z: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f92 : (x: T, y: T[keyof T], z: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : T[keyof T] @@ -2241,8 +2241,8 @@ class OtherPerson { setProperty(this, "parts", parts); >setProperty(this, "parts", parts) : void > : ^^^^ ->setProperty : (obj: T, key: K, value: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setProperty : (obj: T, key: K, value: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >"parts" : "parts" @@ -2257,8 +2257,8 @@ class OtherPerson { return getProperty(this, "parts") >getProperty(this, "parts") : this["parts"] > : ^^^^^^^^^^^^^ ->getProperty : (obj: T, key: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>getProperty : (obj: T, key: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >"parts" : "parts" @@ -2269,16 +2269,16 @@ class OtherPerson { // Modified repro from #12544 function path(obj: T, key1: K1): T[K1]; ->path : { (obj: T, key1: K1): T[K1]; (obj: T_1, key1: K1_1, key2: K2): T_1[K1_1][K2]; (obj: T_1, key1: K1_1, key2: K2, key3: K3): T_1[K1_1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T_1, key1: K1_1, key2: K2): T_1[K1_1][K2]; (obj: T_1, key1: K1_1, key2: K2, key3: K3): T_1[K1_1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >obj : T > : ^ >key1 : K1 > : ^^ function path(obj: T, key1: K1, key2: K2): T[K1][K2]; ->path : { (obj: T_1, key1: K1_1): T_1[K1_1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T_1, key1: K1_1, key2: K2_1, key3: K3): T_1[K1_1][K2_1][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T_1, key1: K1_1): T_1[K1_1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T_1, key1: K1_1, key2: K2_1, key3: K3): T_1[K1_1][K2_1][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >obj : T > : ^ >key1 : K1 @@ -2287,8 +2287,8 @@ function path(obj: T, key1: K1, k > : ^^ function path(obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; ->path : { (obj: T_1, key1: K1_1): T_1[K1_1]; (obj: T_1, key1: K1_1, key2: K2_1): T_1[K1_1][K2_1]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T_1, key1: K1_1): T_1[K1_1]; (obj: T_1, key1: K1_1, key2: K2_1): T_1[K1_1][K2_1]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >obj : T > : ^ >key1 : K1 @@ -2299,16 +2299,16 @@ function path : ^^ function path(obj: any, ...keys: (string | number)[]): any; ->path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >obj : any > : ^^^ >keys : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ function path(obj: any, ...keys: (string | number)[]): any { ->path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >obj : any > : ^^^ >keys : (string | number)[] @@ -2373,8 +2373,8 @@ function f1(thing: Thing) { > : ^^^^^ ^^^^^ ^^^ >path(thing, 'a') : { x: number; y: string; } > : ^^^^^ ^^^^^ ^^^ ->path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >thing : Thing > : ^^^^^ >'a' : "a" @@ -2385,8 +2385,8 @@ function f1(thing: Thing) { > : ^^^^^^ >path(thing, 'a', 'y') : string > : ^^^^^^ ->path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >thing : Thing > : ^^^^^ >'a' : "a" @@ -2399,8 +2399,8 @@ function f1(thing: Thing) { > : ^^^^^^^ >path(thing, 'b') : boolean > : ^^^^^^^ ->path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >thing : Thing > : ^^^^^ >'b' : "b" @@ -2411,8 +2411,8 @@ function f1(thing: Thing) { > : ^^^ >path(thing, ...['a', 'x']) : any > : ^^^ ->path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>path : { (obj: T, key1: K1): T[K1]; (obj: T, key1: K1, key2: K2): T[K1][K2]; (obj: T, key1: K1, key2: K2, key3: K3): T[K1][K2][K3]; (obj: any, ...keys: (string | number)[]): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^ ^^ ^^^ ^^^ >thing : Thing > : ^^^^^ >...['a', 'x'] : string @@ -2428,10 +2428,10 @@ function f1(thing: Thing) { // Repro from comment in #12114 const assignTo2 = (object: T, key1: K1, key2: K2) => ->assignTo2 : (object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => T[K1][K2] -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^ ->(object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => object[key1][key2] = value : (object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => T[K1][K2] -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^ +>assignTo2 : (object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => T[K1][K2] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^ +>(object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => object[key1][key2] = value : (object: T, key1: K1, key2: K2) => (value: T[K1][K2]) => T[K1][K2] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ ^^ ^^^^^^^^^^^^^^ >object : T > : ^ >key1 : K1 @@ -2462,8 +2462,8 @@ const assignTo2 = (object: T, key // Modified repro from #12573 declare function one(handler: (t: T) => void): T ->one : (handler: (t: T) => void) => T -> : ^ ^^ ^^ ^^^^^ +>one : (handler: (t: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >handler : (t: T) => void > : ^ ^^ ^^^^^ >t : T @@ -2474,8 +2474,8 @@ var empty = one(() => {}) // inferred as {}, expected > : ^^^^^^^ >one(() => {}) : unknown > : ^^^^^^^ ->one : (handler: (t: T) => void) => T -> : ^ ^^ ^^ ^^^^^ +>one : (handler: (t: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -2486,8 +2486,8 @@ type Handlers = { [K in keyof T]: (t: T[K]) => void } > : ^^^^ declare function on(handlerHash: Handlers): T ->on : (handlerHash: Handlers) => T -> : ^ ^^ ^^ ^^^^^ +>on : (handlerHash: Handlers) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >handlerHash : Handlers > : ^^^^^^^^^^^ @@ -2496,8 +2496,8 @@ var hashOfEmpty1 = on({ test: () => {} }); // {} > : ^^^^^^^^^^^^^^^^^^ >on({ test: () => {} }) : { test: unknown; } > : ^^^^^^^^^^^^^^^^^^ ->on : (handlerHash: Handlers) => T -> : ^ ^^ ^^ ^^^^^ +>on : (handlerHash: Handlers) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ test: () => {} } : { test: () => void; } > : ^^^^^^^^^^^^^^^^^^^^^ >test : () => void @@ -2510,8 +2510,8 @@ var hashOfEmpty2 = on({ test: (x: boolean) => {} }); // { test: boolean } > : ^^^^^^^^^^^^^^^^^^ >on({ test: (x: boolean) => {} }) : { test: boolean; } > : ^^^^^^^^^^^^^^^^^^ ->on : (handlerHash: Handlers) => T -> : ^ ^^ ^^ ^^^^^ +>on : (handlerHash: Handlers) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ test: (x: boolean) => {} } : { test: (x: boolean) => void; } > : ^^^^^^^^^ ^^ ^^^^^^^^^^^^ >test : (x: boolean) => void @@ -2750,8 +2750,8 @@ type Handler = { }; function onChangeGenericFunction(handler: Handler) { ->onChangeGenericFunction : (handler: Handler) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>onChangeGenericFunction : (handler: Handler) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >handler : Handler > : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^ >preset : number @@ -2981,12 +2981,12 @@ class SampleClass

{ > : ^^^^^^^^^^^ >Object.freeze(props) : Readonly

> : ^^^^^^^^^^^ ->Object.freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Object.freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } -> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>freeze : { (f: T): T; (o: T): Readonly; (o: T): Readonly; } +> : ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >props : P > : ^ } @@ -2999,8 +2999,8 @@ interface Foo { } declare function merge(obj1: T, obj2: U): T & U; ->merge : (obj1: T, obj2: U) => T & U -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>merge : (obj1: T, obj2: U) => T & U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj1 : T > : ^ >obj2 : U @@ -3033,8 +3033,8 @@ class AnotherSampleClass extends SampleClass { > : ^^^^^^^^^^^^^^^^^^ >merge(props, foo) : T & Foo > : ^^^^^^^ ->merge : (obj1: T_1, obj2: U) => T_1 & U -> : ^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>merge : (obj1: T_1, obj2: U) => T_1 & U +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >props : T > : ^ >foo : Foo @@ -3072,8 +3072,8 @@ new AnotherSampleClass({}); // Positive repro from #17166 function f3>(t: T, k: K, tk: T[K]): void { ->f3 : >(t: T, k: K, tk: T[K]) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f3 : >(t: T, k: K, tk: T[K]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >k : K @@ -3249,8 +3249,8 @@ interface I { } declare function take(p: T): void; ->take : (p: T) => void -> : ^ ^^ ^^ ^^^^^ +>take : (p: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >p : T > : ^ @@ -3265,8 +3265,8 @@ function fn(o: T, k: K) { take<{} | null | undefined>(o[k]); >take<{} | null | undefined>(o[k]) : void > : ^^^^ ->take : (p: T_1) => void -> : ^^^^^^ ^^ ^^^^^ +>take : (p: T_1) => void +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >o[k] : T[K] > : ^^^^ >o : T @@ -3277,8 +3277,8 @@ function fn(o: T, k: K) { take(o[k]); >take(o[k]) : void > : ^^^^ ->take : (p: T_1) => void -> : ^^^^^^ ^^ ^^^^^ +>take : (p: T_1) => void +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >o[k] : T[K] > : ^^^^ >o : T diff --git a/tests/baselines/reference/keyofAndIndexedAccess2.types b/tests/baselines/reference/keyofAndIndexedAccess2.types index 526abef4fd1bf..4caade44cf0f2 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess2.types +++ b/tests/baselines/reference/keyofAndIndexedAccess2.types @@ -610,12 +610,12 @@ export function getAllEntities(state: EntityState): E[] { return ids.map(id => entities[id]); >ids.map(id => entities[id]) : { [key: string]: E; [key: number]: E; }[IdOf][] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->ids.map : (callbackfn: (value: IdOf, index: number, array: IdOf[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>ids.map : (callbackfn: (value: IdOf, index: number, array: IdOf[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >ids : IdOf[] > : ^^^^^^^^^ ->map : (callbackfn: (value: IdOf, index: number, array: IdOf[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: IdOf, index: number, array: IdOf[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >id => entities[id] : (id: IdOf) => { [key: string]: E; [key: number]: E; }[IdOf] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id : IdOf diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types index dd0a4ad51fe16..ef019e24ea07e 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport3.types @@ -54,12 +54,12 @@ const _str = "my-fake-sym"; Object.defineProperty(module.exports, _sym, { value: "ok" }); >Object.defineProperty(module.exports, _sym, { value: "ok" }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } @@ -78,12 +78,12 @@ Object.defineProperty(module.exports, _sym, { value: "ok" }); Object.defineProperty(module.exports, _str, { value: "ok" }); >Object.defineProperty(module.exports, _str, { value: "ok" }) : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >module.exports : typeof module.exports > : ^^^^^^^^^^^^^^^^^^^^^ >module : { exports: typeof module.exports; } diff --git a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types index 38f57aa09d37c..fd4c43c665f45 100644 --- a/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types +++ b/tests/baselines/reference/lateBoundAssignmentDeclarationSupport6.types @@ -86,12 +86,12 @@ F.prototype.defsAClass = true; Object.defineProperty(F.prototype, _str, {value: "ok"}); >Object.defineProperty(F.prototype, _str, {value: "ok"}) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >F.prototype : any > : ^^^ >F : typeof F @@ -110,12 +110,12 @@ Object.defineProperty(F.prototype, _str, {value: "ok"}); Object.defineProperty(F.prototype, _sym, {value: "ok"}); >Object.defineProperty(F.prototype, _sym, {value: "ok"}) : any > : ^^^ ->Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>Object.defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProperty : (o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >F.prototype : any > : ^^^ >F : typeof F diff --git a/tests/baselines/reference/mapOnTupleTypes01.types b/tests/baselines/reference/mapOnTupleTypes01.types index bfaea018e6fab..288af0a2e7203 100644 --- a/tests/baselines/reference/mapOnTupleTypes01.types +++ b/tests/baselines/reference/mapOnTupleTypes01.types @@ -6,8 +6,8 @@ export let mapOnLooseArrayLiteral = [1, 2, 3, 4].map(n => n * n); > : ^^^^^^^^ >[1, 2, 3, 4].map(n => n * n) : number[] > : ^^^^^^^^ ->[1, 2, 3, 4].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[1, 2, 3, 4].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[1, 2, 3, 4] : number[] > : ^^^^^^^^ >1 : 1 @@ -18,8 +18,8 @@ export let mapOnLooseArrayLiteral = [1, 2, 3, 4].map(n => n * n); > : ^ >4 : 4 > : ^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n * n : (n: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >n : number @@ -46,12 +46,12 @@ export let a = numTuple.map(x => x * x); > : ^^^^^^^^ >numTuple.map(x => x * x) : number[] > : ^^^^^^^^ ->numTuple.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numTuple.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numTuple : [number] > : ^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x * x : (x: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >x : number @@ -100,12 +100,12 @@ export let b = numNum.map(n => n * n); > : ^^^^^^^^ >numNum.map(n => n * n) : number[] > : ^^^^^^^^ ->numNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numNum : [number, number] > : ^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n * n : (n: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >n : number @@ -122,12 +122,12 @@ export let c = strStr.map(s => s.charCodeAt(0)); > : ^^^^^^^^ >strStr.map(s => s.charCodeAt(0)) : number[] > : ^^^^^^^^ ->strStr.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>strStr.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >strStr : [string, string] > : ^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >s => s.charCodeAt(0) : (s: string) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >s : string @@ -148,12 +148,12 @@ export let d = numStr.map(x => x); > : ^^^^^^^^^^^^^^^^^^^ >numStr.map(x => x) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->numStr.map : (callbackfn: (value: string | number, index: number, array: (string | number)[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numStr.map : (callbackfn: (value: string | number, index: number, array: (string | number)[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numStr : [number, string] > : ^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: string | number, index: number, array: (string | number)[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: string | number, index: number, array: (string | number)[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >x => x : (x: string | number) => string | number > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number @@ -180,12 +180,12 @@ export let e = numNumNum.map(n => n * n); > : ^^^^^^^^ >numNumNum.map(n => n * n) : number[] > : ^^^^^^^^ ->numNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numNumNum : [number, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n * n : (n: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >n : number @@ -218,12 +218,12 @@ export let f = numNumNumNum.map(n => n * n); > : ^^^^^^^^ >numNumNumNum.map(n => n * n) : number[] > : ^^^^^^^^ ->numNumNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numNumNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numNumNumNum : [number, number, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n * n : (n: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >n : number @@ -258,12 +258,12 @@ export let g = numNumNumNumNum.map(n => n * n); > : ^^^^^^^^ >numNumNumNumNum.map(n => n * n) : number[] > : ^^^^^^^^ ->numNumNumNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numNumNumNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numNumNumNumNum : [number, number, number, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n * n : (n: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >n : number @@ -301,12 +301,12 @@ export let h = numNumNumNumNum.map(n => n * n); > : ^^^^^^^^ >numNumNumNumNum.map(n => n * n) : number[] > : ^^^^^^^^ ->numNumNumNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>numNumNumNumNum.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >numNumNumNumNum : [number, number, number, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >n => n * n : (n: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >n : number diff --git a/tests/baselines/reference/mapOnTupleTypes02.types b/tests/baselines/reference/mapOnTupleTypes02.types index 8418460659903..673163c9b0cdb 100644 --- a/tests/baselines/reference/mapOnTupleTypes02.types +++ b/tests/baselines/reference/mapOnTupleTypes02.types @@ -14,12 +14,12 @@ export function increment(point: Point) { return point.map(d => d + 1); >point.map(d => d + 1) : number[] > : ^^^^^^^^ ->point.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>point.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >point : Point > : ^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >d => d + 1 : (d: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >d : number diff --git a/tests/baselines/reference/mappedTypeConstraints2.types b/tests/baselines/reference/mappedTypeConstraints2.types index b975d98fa9293..f7d5a59cb5087 100644 --- a/tests/baselines/reference/mappedTypeConstraints2.types +++ b/tests/baselines/reference/mappedTypeConstraints2.types @@ -223,12 +223,12 @@ function validate(obj: T, bounds: NumericBoundsOf) { > : ^^^ >Object.entries(obj) : [string, any][] > : ^^^^^^^^^^^^^^^ ->Object.entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } -> : ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>Object.entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } -> : ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>entries : { (o: { [s: string]: T_1; } | ArrayLike): [string, T_1][]; (o: {}): [string, any][]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >obj : T > : ^ diff --git a/tests/baselines/reference/mappedTypeContextualTypesApplied.types b/tests/baselines/reference/mappedTypeContextualTypesApplied.types index 25ddfbb721ece..137bf4cd60e43 100644 --- a/tests/baselines/reference/mappedTypeContextualTypesApplied.types +++ b/tests/baselines/reference/mappedTypeContextualTypesApplied.types @@ -28,14 +28,14 @@ declare function mapped3(obj: T): void > : ^ declare function mapped4(obj: T & {[P in keyof T]: TakeString}): void; ->mapped4 : (obj: T & { [P in keyof T]: TakeString; }) => void -> : ^ ^^ ^^ ^^^^^ +>mapped4 : (obj: T & { [P in keyof T]: TakeString; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T & { [P in keyof T]: TakeString; } > : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare function mapped5(obj: T & {[P in K]: TakeString}): void; ->mapped5 : (obj: T & { [P in K]: TakeString; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>mapped5 : (obj: T & { [P in K]: TakeString; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >obj : T & { [P in K]: TakeString; } > : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ @@ -114,8 +114,8 @@ mapped3({foo: s => 42}); mapped4({foo: s => 42}); >mapped4({foo: s => 42}) : void > : ^^^^ ->mapped4 : (obj: T & { [P in keyof T]: TakeString; }) => void -> : ^ ^^ ^^ ^^^^^ +>mapped4 : (obj: T & { [P in keyof T]: TakeString; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{foo: s => 42} : { foo: (s: string) => number; } > : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo : (s: string) => number @@ -130,8 +130,8 @@ mapped4({foo: s => 42}); mapped5({foo: s => 42}); >mapped5({foo: s => 42}) : void > : ^^^^ ->mapped5 : (obj: T & { [P in K]: TakeString; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ +>mapped5 : (obj: T & { [P in K]: TakeString; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ >{foo: s => 42} : { foo: (s: string) => number; } > : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ >foo : (s: string) => number diff --git a/tests/baselines/reference/mappedTypeErrors.errors.txt b/tests/baselines/reference/mappedTypeErrors.errors.txt index e03c20d64bff7..a8890166b8fe8 100644 --- a/tests/baselines/reference/mappedTypeErrors.errors.txt +++ b/tests/baselines/reference/mappedTypeErrors.errors.txt @@ -84,7 +84,6 @@ mappedTypeErrors.ts(152,17): error TS2339: Property 'foo' does not exist on type let y: Pick; // Error ~ !!! error TS2344: Type 'T' does not satisfy the constraint 'keyof Shape'. -!!! related TS2208 mappedTypeErrors.ts:32:13: This type parameter might need an `extends keyof Shape` constraint. } function f2(x: T) { @@ -233,7 +232,6 @@ mappedTypeErrors.ts(152,17): error TS2339: Property 'foo' does not exist on type pt: {[P in T]?: T[P]}, // note: should be in keyof T ~ !!! error TS2322: Type 'T' is not assignable to type 'string | number | symbol'. -!!! related TS2208 mappedTypeErrors.ts:134:11: This type parameter might need an `extends string | number | symbol` constraint. ~~~~ !!! error TS2536: Type 'P' cannot be used to index type 'T'. }; diff --git a/tests/baselines/reference/mappedTypeErrors.types b/tests/baselines/reference/mappedTypeErrors.types index 32839343182fc..03f4489b1cb51 100644 --- a/tests/baselines/reference/mappedTypeErrors.types +++ b/tests/baselines/reference/mappedTypeErrors.types @@ -82,8 +82,8 @@ type T16 = Pick; // Error > : ^^^ function f1(x: T) { ->f1 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -128,8 +128,8 @@ function f4(x: T) { // Type identity checking function f10() { ->f10 : () => void -> : ^ ^^^^^^^^^^^ +>f10 : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type K = keyof T; >K : keyof T @@ -149,8 +149,8 @@ function f10() { } function f11() { ->f11 : () => void -> : ^ ^^^^^^^^^^^ +>f11 : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ var x: { [P in keyof T]: T[P] }; >x : { [P in keyof T]: T[P]; } @@ -170,8 +170,8 @@ function f11() { } function f12() { ->f12 : () => void -> : ^ ^^^^^^^^^^^ +>f12 : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ var x: { [P in keyof T]: T[P] }; >x : { [P in keyof T]: T[P]; } @@ -185,16 +185,16 @@ function f12() { // Check that inferences to mapped types are secondary declare function objAndReadonly(primary: T, secondary: Readonly): T; ->objAndReadonly : (primary: T, secondary: Readonly) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndReadonly : (primary: T, secondary: Readonly) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >primary : T > : ^ >secondary : Readonly > : ^^^^^^^^^^^ declare function objAndPartial(primary: T, secondary: Partial): T; ->objAndPartial : (primary: T, secondary: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndPartial : (primary: T, secondary: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >primary : T > : ^ >secondary : Partial @@ -209,8 +209,8 @@ function f20() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >objAndReadonly({ x: 0, y: 0 }, { x: 1 }) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->objAndReadonly : (primary: T, secondary: Readonly) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndReadonly : (primary: T, secondary: Readonly) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 0, y: 0 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -233,8 +233,8 @@ function f20() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >objAndReadonly({ x: 0, y: 0 }, { x: 1, y: 1 }) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->objAndReadonly : (primary: T, secondary: Readonly) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndReadonly : (primary: T, secondary: Readonly) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 0, y: 0 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -261,8 +261,8 @@ function f20() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >objAndReadonly({ x: 0, y: 0 }, { x: 1, y: 1, z: 1 }) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->objAndReadonly : (primary: T, secondary: Readonly) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndReadonly : (primary: T, secondary: Readonly) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 0, y: 0 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -298,8 +298,8 @@ function f21() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >objAndPartial({ x: 0, y: 0 }, { x: 1 }) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->objAndPartial : (primary: T, secondary: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndPartial : (primary: T, secondary: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 0, y: 0 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -322,8 +322,8 @@ function f21() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >objAndPartial({ x: 0, y: 0 }, { x: 1, y: 1 }) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->objAndPartial : (primary: T, secondary: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndPartial : (primary: T, secondary: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 0, y: 0 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -350,8 +350,8 @@ function f21() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >objAndPartial({ x: 0, y: 0 }, { x: 1, y: 1, z: 1 }) : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->objAndPartial : (primary: T, secondary: Partial) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>objAndPartial : (primary: T, secondary: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 0, y: 0 } : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number @@ -391,8 +391,8 @@ interface Foo { } function setState(obj: T, props: Pick) { ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >props : Pick @@ -439,8 +439,8 @@ let foo: Foo = { a: "hello", b: 42 }; setState(foo, { a: "test", b: 43 }) >setState(foo, { a: "test", b: 43 }) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >{ a: "test", b: 43 } : { a: string; b: number; } @@ -457,8 +457,8 @@ setState(foo, { a: "test", b: 43 }) setState(foo, { a: "hi" }); >setState(foo, { a: "hi" }) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >{ a: "hi" } : { a: string; } @@ -471,8 +471,8 @@ setState(foo, { a: "hi" }); setState(foo, { b: undefined }); >setState(foo, { b: undefined }) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >{ b: undefined } : { b: undefined; } @@ -485,8 +485,8 @@ setState(foo, { b: undefined }); setState(foo, { }); >setState(foo, { }) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >{ } : {} @@ -495,8 +495,8 @@ setState(foo, { }); setState(foo, foo); >setState(foo, foo) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >foo : Foo @@ -505,8 +505,8 @@ setState(foo, foo); setState(foo, { a: undefined }); // Error >setState(foo, { a: undefined }) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >{ a: undefined } : { a: undefined; } @@ -519,8 +519,8 @@ setState(foo, { a: undefined }); // Error setState(foo, { c: true }); // Error >setState(foo, { c: true }) : void > : ^^^^ ->setState : (obj: T, props: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>setState : (obj: T, props: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : Foo > : ^^^ >{ c: true } : { c: boolean; } @@ -799,8 +799,8 @@ let f: Foo2 = { // Repro from #28170 function test1(obj: Pick) { ->test1 : (obj: Pick) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ +>test1 : (obj: Pick) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >obj : Pick > : ^^^^^^^^^^ @@ -816,8 +816,8 @@ function test1(obj: Pick) { } function test2(obj: Record) { ->test2 : (obj: Record) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ +>test2 : (obj: Record) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >obj : Record > : ^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.js b/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.js index 8c3efbcca6d84..ff019cfe55d97 100644 --- a/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.js +++ b/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.js @@ -15,7 +15,7 @@ export function test2>(schema: { //// [mappedTypeGenericInstantiationPreservesInlineForm.d.ts] -export declare const test1: >(schema: { [K in keyof Required]: T[K]; }) => void; +export declare const test1: >(schema: { [K in keyof Required]: T[K]; }) => void; export declare function test2>(schema: { [K in keyof Required]: T[K]; }): void; diff --git a/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.types b/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.types index 56ac7dae6a651..2fb30412a9862 100644 --- a/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.types +++ b/tests/baselines/reference/mappedTypeGenericInstantiationPreservesInlineForm.types @@ -4,10 +4,10 @@ // repro from #53109 export const test1 = >(schema: { ->test1 : >(schema: { [K in keyof Required]: T[K]; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ->>(schema: { [K in keyof Required]: T[K];}) => {} : >(schema: { [K in keyof Required]: T[K]; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>test1 : >(schema: { [K in keyof Required]: T[K]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>>(schema: { [K in keyof Required]: T[K];}) => {} : >(schema: { [K in keyof Required]: T[K]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >schema : { [K in keyof Required]: T[K]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -15,8 +15,8 @@ export const test1 = >(schema: { }) => {} export function test2>(schema: { ->test2 : >(schema: { [K in keyof Required]: T[K]; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ +>test2 : >(schema: { [K in keyof Required]: T[K]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >schema : { [K in keyof Required]: T[K]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeInferenceAliasSubstitution.types b/tests/baselines/reference/mappedTypeInferenceAliasSubstitution.types index 47f5aae602e67..1e8ff3e873279 100644 --- a/tests/baselines/reference/mappedTypeInferenceAliasSubstitution.types +++ b/tests/baselines/reference/mappedTypeInferenceAliasSubstitution.types @@ -22,10 +22,10 @@ type Field = { [K in A]: R } > : ^^^^^^^^^^^ const f = (x: { [K in A]: Field }): R => ({} as any); ->f : (x: { [K in A]: Field; }) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ->(x: { [K in A]: Field }): R => ({} as any) : (x: { [K in A]: Field; }) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f : (x: { [K in A]: Field; }) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(x: { [K in A]: Field }): R => ({} as any) : (x: { [K in A]: Field; }) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { [K in A]: Field; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^ >({} as any) : any @@ -38,16 +38,16 @@ const r1 = f(v); > : ^^^^^^ >f(v) : number > : ^^^^^^ ->f : (x: { [K in A]: Field; }) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f : (x: { [K in A]: Field; }) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >v : { test: { smth: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const g = (x: Field>): R => ({} as any); ->g : (x: Field>) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ->(x: Field>): R => ({} as any) : (x: Field>) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>g : (x: Field>) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(x: Field>): R => ({} as any) : (x: Field>) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Field> > : ^^^^^^^^^^^^^^^^^^^^^ >({} as any) : any @@ -60,8 +60,8 @@ const r2 = g(v); > : ^^^^^^ >g(v) : number > : ^^^^^^ ->g : (x: Field>) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>g : (x: Field>) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >v : { test: { smth: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeInferenceErrors.types b/tests/baselines/reference/mappedTypeInferenceErrors.types index 0120c7e85bb72..689833fbda662 100644 --- a/tests/baselines/reference/mappedTypeInferenceErrors.types +++ b/tests/baselines/reference/mappedTypeInferenceErrors.types @@ -11,8 +11,8 @@ type ComputedOf = { } declare function foo(options: { props: P, computed: ComputedOf } & ThisType

): void; ->foo : (options: { props: P; computed: ComputedOf; } & ThisType

) => void -> : ^ ^^ ^^ ^^ ^^^^^ +>foo :

(options: { props: P; computed: ComputedOf; } & ThisType

) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >options : { props: P; computed: ComputedOf; } & ThisType

> : ^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ >props : P @@ -23,8 +23,8 @@ declare function foo(options: { props: P, computed: ComputedOf } & This foo({ >foo({ props: { x: 10, y: 20 }, computed: { bar(): number { let z = this.bar; return 42; }, baz: 42 }}) : void > : ^^^^ ->foo : (options: { props: P; computed: ComputedOf; } & ThisType

) => void -> : ^ ^^ ^^ ^^ ^^^^^ +>foo :

(options: { props: P; computed: ComputedOf; } & ThisType

) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ props: { x: 10, y: 20 }, computed: { bar(): number { let z = this.bar; return 42; }, baz: 42 }} : { props: { x: number; y: number; }; computed: { bar(): number; baz: number; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypeRecursiveInference2.errors.txt b/tests/baselines/reference/mappedTypeRecursiveInference2.errors.txt new file mode 100644 index 0000000000000..55589e373576b --- /dev/null +++ b/tests/baselines/reference/mappedTypeRecursiveInference2.errors.txt @@ -0,0 +1,27 @@ +mappedTypeRecursiveInference2.ts(16,48): error TS7006: Parameter 'x' implicitly has an 'any' type. +mappedTypeRecursiveInference2.ts(17,42): error TS7006: Parameter 'x' implicitly has an 'any' type. + + +==== mappedTypeRecursiveInference2.ts (2 errors) ==== + type MorphTuple = [string, "|>", any] + + type validateMorph = def[1] extends "|>" + ? [validateDefinition, "|>", (In: def[0]) => unknown] + : def + + type validateDefinition = def extends MorphTuple + ? validateMorph + : { + [k in keyof def]: validateDefinition + } + + declare function type(def: validateDefinition): def + + const shallow = type(["ark", "|>", (x) => x.length]) + const objectLiteral = type({ a: ["ark", "|>", (x) => x.length] }) + ~ +!!! error TS7006: Parameter 'x' implicitly has an 'any' type. + const nestedTuple = type([["ark", "|>", (x) => x.length]]) + ~ +!!! error TS7006: Parameter 'x' implicitly has an 'any' type. + \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeRecursiveInference2.symbols b/tests/baselines/reference/mappedTypeRecursiveInference2.symbols index 83a50e2ca98dd..d2cd119e407f7 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference2.symbols +++ b/tests/baselines/reference/mappedTypeRecursiveInference2.symbols @@ -59,15 +59,11 @@ const objectLiteral = type({ a: ["ark", "|>", (x) => x.length] }) >type : Symbol(type, Decl(mappedTypeRecursiveInference2.ts, 10, 7)) >a : Symbol(a, Decl(mappedTypeRecursiveInference2.ts, 15, 28)) >x : Symbol(x, Decl(mappedTypeRecursiveInference2.ts, 15, 47)) ->x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(mappedTypeRecursiveInference2.ts, 15, 47)) ->length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) const nestedTuple = type([["ark", "|>", (x) => x.length]]) >nestedTuple : Symbol(nestedTuple, Decl(mappedTypeRecursiveInference2.ts, 16, 5)) >type : Symbol(type, Decl(mappedTypeRecursiveInference2.ts, 10, 7)) >x : Symbol(x, Decl(mappedTypeRecursiveInference2.ts, 16, 41)) ->x.length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) >x : Symbol(x, Decl(mappedTypeRecursiveInference2.ts, 16, 41)) ->length : Symbol(String.length, Decl(lib.es5.d.ts, --, --)) diff --git a/tests/baselines/reference/mappedTypeRecursiveInference2.types b/tests/baselines/reference/mappedTypeRecursiveInference2.types index 695d52b719f98..9fd457acfb440 100644 --- a/tests/baselines/reference/mappedTypeRecursiveInference2.types +++ b/tests/baselines/reference/mappedTypeRecursiveInference2.types @@ -25,86 +25,86 @@ type validateDefinition = def extends MorphTuple } declare function type(def: validateDefinition): def ->type : (def: validateDefinition) => def -> : ^ ^^ ^^ ^^^^^ +>type : (def: validateDefinition) => def +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >def : validateDefinition > : ^^^^^^^^^^^^^^^^^^^^^^^ const shallow = type(["ark", "|>", (x) => x.length]) ->shallow : ["ark", "|>", (x: "ark") => number] -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->type(["ark", "|>", (x) => x.length]) : ["ark", "|>", (x: "ark") => number] -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->type : (def: validateDefinition) => def -> : ^ ^^ ^^ ^^^^^ ->["ark", "|>", (x) => x.length] : ["ark", "|>", (x: "ark") => number] -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>shallow : [string, "|>", (x: string) => number] +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>type(["ark", "|>", (x) => x.length]) : [string, "|>", (x: string) => number] +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>type : (def: validateDefinition) => def +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>["ark", "|>", (x) => x.length] : [string, "|>", (x: string) => number] +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ >"ark" : "ark" > : ^^^^^ >"|>" : "|>" > : ^^^^ ->(x) => x.length : (x: "ark") => number -> : ^ ^^^^^^^^^^^^^^^^^^ ->x : "ark" -> : ^^^^^ +>(x) => x.length : (x: string) => number +> : ^ ^^^^^^^^^^^^^^^^^^^ +>x : string +> : ^^^^^^ >x.length : number > : ^^^^^^ ->x : "ark" -> : ^^^^^ +>x : string +> : ^^^^^^ >length : number > : ^^^^^^ const objectLiteral = type({ a: ["ark", "|>", (x) => x.length] }) ->objectLiteral : { a: ["ark", "|>", (x: "ark") => number]; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ->type({ a: ["ark", "|>", (x) => x.length] }) : { a: ["ark", "|>", (x: "ark") => number]; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ->type : (def: validateDefinition) => def -> : ^ ^^ ^^ ^^^^^ ->{ a: ["ark", "|>", (x) => x.length] } : { a: ["ark", "|>", (x: "ark") => number]; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ->a : ["ark", "|>", (x: "ark") => number] -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ->["ark", "|>", (x) => x.length] : ["ark", "|>", (x: "ark") => number] -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>objectLiteral : { a: (string | ((x: any) => any))[]; } +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>type({ a: ["ark", "|>", (x) => x.length] }) : { a: (string | ((x: any) => any))[]; } +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>type : (def: validateDefinition) => def +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>{ a: ["ark", "|>", (x) => x.length] } : { a: (string | ((x: any) => any))[]; } +> : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ +>a : (string | ((x: any) => any))[] +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>["ark", "|>", (x) => x.length] : (string | ((x: any) => any))[] +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >"ark" : "ark" > : ^^^^^ >"|>" : "|>" > : ^^^^ ->(x) => x.length : (x: "ark") => number -> : ^ ^^^^^^^^^^^^^^^^^^ ->x : "ark" -> : ^^^^^ ->x.length : number -> : ^^^^^^ ->x : "ark" -> : ^^^^^ ->length : number -> : ^^^^^^ +>(x) => x.length : (x: any) => any +> : ^ ^^^^^^^^^^^^^ +>x : any +> : ^^^ +>x.length : any +> : ^^^ +>x : any +> : ^^^ +>length : any +> : ^^^ const nestedTuple = type([["ark", "|>", (x) => x.length]]) ->nestedTuple : [["ark", "|>", (x: "ark") => number]] -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->type([["ark", "|>", (x) => x.length]]) : [["ark", "|>", (x: "ark") => number]] -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->type : (def: validateDefinition) => def -> : ^ ^^ ^^ ^^^^^ ->[["ark", "|>", (x) => x.length]] : [["ark", "|>", (x: "ark") => number]] -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ->["ark", "|>", (x) => x.length] : ["ark", "|>", (x: "ark") => number] -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ +>nestedTuple : [(string | ((x: any) => any))[]] +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>type([["ark", "|>", (x) => x.length]]) : [(string | ((x: any) => any))[]] +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>type : (def: validateDefinition) => def +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>[["ark", "|>", (x) => x.length]] : [(string | ((x: any) => any))[]] +> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>["ark", "|>", (x) => x.length] : (string | ((x: any) => any))[] +> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ >"ark" : "ark" > : ^^^^^ >"|>" : "|>" > : ^^^^ ->(x) => x.length : (x: "ark") => number -> : ^ ^^^^^^^^^^^^^^^^^^ ->x : "ark" -> : ^^^^^ ->x.length : number -> : ^^^^^^ ->x : "ark" -> : ^^^^^ ->length : number -> : ^^^^^^ +>(x) => x.length : (x: any) => any +> : ^ ^^^^^^^^^^^^^ +>x : any +> : ^^^ +>x.length : any +> : ^^^ +>x : any +> : ^^^ +>length : any +> : ^^^ diff --git a/tests/baselines/reference/mappedTypeRelationships.errors.txt b/tests/baselines/reference/mappedTypeRelationships.errors.txt index 1918a9532f32d..8e1180721f1bf 100644 --- a/tests/baselines/reference/mappedTypeRelationships.errors.txt +++ b/tests/baselines/reference/mappedTypeRelationships.errors.txt @@ -46,6 +46,10 @@ mappedTypeRelationships.ts(148,5): error TS2322: Type '{ [P in keyof T]: T[P]; } Type 'keyof U' is not assignable to type 'keyof T'. Type 'string | number | symbol' is not assignable to type 'keyof T'. Type 'string' is not assignable to type 'keyof T'. + Type 'string' is not assignable to type 'never'. + Type 'keyof U' is not assignable to type 'never'. + Type 'string | number | symbol' is not assignable to type 'never'. + Type 'string' is not assignable to type 'never'. mappedTypeRelationships.ts(153,5): error TS2322: Type '{ [P in K]: T[P]; }' is not assignable to type '{ [P in keyof T]: T[P]; }'. Type 'keyof T' is not assignable to type 'K'. 'keyof T' is assignable to the constraint of type 'K', but 'K' could be instantiated with a different subtype of constraint 'string | number | symbol'. @@ -89,7 +93,6 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'T[keyof T]' is not assignable to type 'U[keyof T]'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 mappedTypeRelationships.ts:9:13: This type parameter might need an `extends U` constraint. } function f4(x: T, y: U, k: K) { @@ -99,7 +102,6 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'T[K]' is not assignable to type 'U[K]'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 mappedTypeRelationships.ts:14:13: This type parameter might need an `extends U` constraint. } function f5(x: T, y: U, k: keyof U) { @@ -182,7 +184,6 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'T[keyof T]' is not assignable to type 'U[keyof T]'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 mappedTypeRelationships.ts:59:14: This type parameter might need an `extends U` constraint. ~~~~ !!! error TS2542: Index signature in type 'Readonly' only permits reading. } @@ -194,7 +195,6 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'T[K]' is not assignable to type 'U[K]'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 mappedTypeRelationships.ts:64:14: This type parameter might need an `extends U` constraint. ~~~~ !!! error TS2542: Index signature in type 'Readonly' only permits reading. } @@ -288,7 +288,6 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'T[P]' is not assignable to type 'U[P]'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 mappedTypeRelationships.ts:141:14: This type parameter might need an `extends U` constraint. } function f72(x: { [P in keyof T]: T[P] }, y: { [P in keyof U]: U[P] }) { @@ -299,6 +298,10 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'keyof U' is not assignable to type 'keyof T'. !!! error TS2322: Type 'string | number | symbol' is not assignable to type 'keyof T'. !!! error TS2322: Type 'string' is not assignable to type 'keyof T'. +!!! error TS2322: Type 'string' is not assignable to type 'never'. +!!! error TS2322: Type 'keyof U' is not assignable to type 'never'. +!!! error TS2322: Type 'string | number | symbol' is not assignable to type 'never'. +!!! error TS2322: Type 'string' is not assignable to type 'never'. } function f73(x: { [P in K]: T[P] }, y: { [P in keyof T]: T[P] }) { @@ -348,7 +351,6 @@ mappedTypeRelationships.ts(168,5): error TS2322: Type '{ [P in K]: T[P]; }' is n !!! error TS2322: Type 'T[P]' is not assignable to type 'U[P]'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 mappedTypeRelationships.ts:166:14: This type parameter might need an `extends U` constraint. } function f80(t: T): Partial { diff --git a/tests/baselines/reference/mappedTypeRelationships.types b/tests/baselines/reference/mappedTypeRelationships.types index ea45a0eb3041c..d6cbb6f2b164a 100644 --- a/tests/baselines/reference/mappedTypeRelationships.types +++ b/tests/baselines/reference/mappedTypeRelationships.types @@ -2,8 +2,8 @@ === mappedTypeRelationships.ts === function f1(x: T, k: keyof T) { ->f1 : (x: T, k: keyof T) => T[keyof T] -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ +>f1 : (x: T, k: keyof T) => T[keyof T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^ >x : T > : ^ >k : keyof T @@ -19,8 +19,8 @@ function f1(x: T, k: keyof T) { } function f2(x: T, k: K) { ->f2 : (x: T, k: K) => T[K] -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f2 : (x: T, k: K) => T[K] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >k : K @@ -36,8 +36,8 @@ function f2(x: T, k: K) { } function f3(x: T, y: U, k: keyof T) { ->f3 : (x: T, y: U, k: keyof T) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (x: T, y: U, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -79,8 +79,8 @@ function f3(x: T, y: U, k: keyof T) { } function f4(x: T, y: U, k: K) { ->f4 : (x: T, y: U, k: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f4 : (x: T, y: U, k: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -122,8 +122,8 @@ function f4(x: T, y: U, k: K) { } function f5(x: T, y: U, k: keyof U) { ->f5 : (x: T, y: U, k: keyof U) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f5 : (x: T, y: U, k: keyof U) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -165,8 +165,8 @@ function f5(x: T, y: U, k: keyof U) { } function f6(x: T, y: U, k: K) { ->f6 : (x: T, y: U, k: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f6 : (x: T, y: U, k: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : U @@ -208,8 +208,8 @@ function f6(x: T, y: U, k: K) { } function f10(x: T, y: Partial, k: keyof T) { ->f10 : (x: T, y: Partial, k: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f10 : (x: T, y: Partial, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Partial @@ -251,8 +251,8 @@ function f10(x: T, y: Partial, k: keyof T) { } function f11(x: T, y: Partial, k: K) { ->f11 : (x: T, y: Partial, k: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f11 : (x: T, y: Partial, k: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Partial @@ -294,8 +294,8 @@ function f11(x: T, y: Partial, k: K) { } function f12(x: T, y: Partial, k: keyof T) { ->f12 : (x: T, y: Partial, k: keyof T) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f12 : (x: T, y: Partial, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Partial @@ -337,8 +337,8 @@ function f12(x: T, y: Partial, k: keyof T) { } function f13(x: T, y: Partial, k: K) { ->f13 : (x: T, y: Partial, k: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f13 : (x: T, y: Partial, k: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Partial @@ -380,8 +380,8 @@ function f13(x: T, y: Partial, k: K) { } function f20(x: T, y: Readonly, k: keyof T) { ->f20 : (x: T, y: Readonly, k: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f20 : (x: T, y: Readonly, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Readonly @@ -423,8 +423,8 @@ function f20(x: T, y: Readonly, k: keyof T) { } function f21(x: T, y: Readonly, k: K) { ->f21 : (x: T, y: Readonly, k: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f21 : (x: T, y: Readonly, k: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Readonly @@ -466,8 +466,8 @@ function f21(x: T, y: Readonly, k: K) { } function f22(x: T, y: Readonly, k: keyof T) { ->f22 : (x: T, y: Readonly, k: keyof T) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f22 : (x: T, y: Readonly, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Readonly @@ -509,8 +509,8 @@ function f22(x: T, y: Readonly, k: keyof T) { } function f23(x: T, y: Readonly, k: K) { ->f23 : (x: T, y: Readonly, k: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f23 : (x: T, y: Readonly, k: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Readonly @@ -560,8 +560,8 @@ type Thing = { a: string, b: string }; > : ^^^^^^ function f30(x: T, y: Partial) { ->f30 : (x: T, y: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f30 : (x: T, y: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Partial @@ -610,8 +610,8 @@ function f31(x: Partial, y: Partial) { } function f40(x: T, y: Readonly) { ->f40 : (x: T, y: Readonly) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f40 : (x: T, y: Readonly) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : Readonly @@ -754,8 +754,8 @@ type T2 = { } function f60(x: T1, y: T2) { ->f60 : (x: T1, y: T2) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f60 : (x: T1, y: T2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T1 > : ^^^^^ >y : T2 @@ -786,8 +786,8 @@ type Identity = { } function f61(x: Identity, y: Partial) { ->f61 : (x: Identity, y: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f61 : (x: Identity, y: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Identity > : ^^^^^^^^^^^ >y : Partial @@ -811,8 +811,8 @@ function f61(x: Identity, y: Partial) { } function f62(x: Identity, y: Readonly) { ->f62 : (x: Identity, y: Readonly) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f62 : (x: Identity, y: Readonly) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Identity > : ^^^^^^^^^^^ >y : Readonly @@ -836,8 +836,8 @@ function f62(x: Identity, y: Readonly) { } function f70(x: { [P in keyof T]: T[P] }, y: { [P in keyof T]: T[P] }) { ->f70 : (x: { [P in keyof T]: T[P]; }, y: { [P in keyof T]: T[P]; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f70 : (x: { [P in keyof T]: T[P]; }, y: { [P in keyof T]: T[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in keyof T]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^ >y : { [P in keyof T]: T[P]; } @@ -861,8 +861,8 @@ function f70(x: { [P in keyof T]: T[P] }, y: { [P in keyof T]: T[P] }) { } function f71(x: { [P in keyof T]: T[P] }, y: { [P in keyof T]: U[P] }) { ->f71 : (x: { [P in keyof T]: T[P]; }, y: { [P in keyof T]: U[P]; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f71 : (x: { [P in keyof T]: T[P]; }, y: { [P in keyof T]: U[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in keyof T]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^ >y : { [P in keyof T]: U[P]; } @@ -886,8 +886,8 @@ function f71(x: { [P in keyof T]: T[P] }, y: { [P in keyof T]: U } function f72(x: { [P in keyof T]: T[P] }, y: { [P in keyof U]: U[P] }) { ->f72 : (x: { [P in keyof T]: T[P]; }, y: { [P in keyof U]: U[P]; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f72 : (x: { [P in keyof T]: T[P]; }, y: { [P in keyof U]: U[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in keyof T]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^ >y : { [P in keyof U]: U[P]; } @@ -911,8 +911,8 @@ function f72(x: { [P in keyof T]: T[P] }, y: { [P in keyof U]: U } function f73(x: { [P in K]: T[P] }, y: { [P in keyof T]: T[P] }) { ->f73 : (x: { [P in K]: T[P]; }, y: { [P in keyof T]: T[P]; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f73 : (x: { [P in K]: T[P]; }, y: { [P in keyof T]: T[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in K]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^ >y : { [P in keyof T]: T[P]; } @@ -936,8 +936,8 @@ function f73(x: { [P in K]: T[P] }, y: { [P in keyof T]: T } function f74(x: { [P in K]: T[P] }, y: { [P in keyof U]: U[P] }) { ->f74 : (x: { [P in K]: T[P]; }, y: { [P in keyof U]: U[P]; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f74 : (x: { [P in K]: T[P]; }, y: { [P in keyof U]: U[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in K]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^ >y : { [P in keyof U]: U[P]; } @@ -961,8 +961,8 @@ function f74(x: { [P in K]: T[P] }, y: { [P i } function f75(x: { [P in K]: T[P] }, y: { [P in keyof T]: U[P] }) { ->f75 : (x: { [P in K]: T[P]; }, y: { [P in keyof T]: U[P]; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f75 : (x: { [P in K]: T[P]; }, y: { [P in keyof T]: U[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in K]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^ >y : { [P in keyof T]: U[P]; } @@ -986,8 +986,8 @@ function f75(x: { [P in K]: T[P] }, y: { [P i } function f76(x: { [P in K]: T[P] }, y: { [P in K]: U[P] }) { ->f76 : (x: { [P in K]: T[P]; }, y: { [P in K]: U[P]; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f76 : (x: { [P in K]: T[P]; }, y: { [P in K]: U[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in K]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^ >y : { [P in K]: U[P]; } @@ -1011,8 +1011,8 @@ function f76(x: { [P in K]: T[P] }, y: { [P i } function f80(t: T): Partial { ->f80 : (t: T) => Partial -> : ^ ^^ ^^ ^^^^^ +>f80 : (t: T) => Partial +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >t : T > : ^ @@ -1022,8 +1022,8 @@ function f80(t: T): Partial { } function f81(t: T, k: K): Partial { ->f81 : (t: T, k: K) => Partial -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>f81 : (t: T, k: K) => Partial +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >k : K @@ -1039,8 +1039,8 @@ function f81(t: T, k: K): Partial { } function f82(t: T, k1: K1, k2: K2): Partial { ->f82 : (t: T, k1: K1, k2: K2) => Partial -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f82 : (t: T, k1: K1, k2: K2) => Partial +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >t : T > : ^ >k1 : K1 diff --git a/tests/baselines/reference/mappedTypes1.types b/tests/baselines/reference/mappedTypes1.types index 2d6ccaaa10c92..d08cb4a909b22 100644 --- a/tests/baselines/reference/mappedTypes1.types +++ b/tests/baselines/reference/mappedTypes1.types @@ -104,8 +104,8 @@ type T47 = { [P in string | "a" | "b" | "0" | "1"]: void }; > : ^^^ declare function f1(): { [P in keyof T1]: void }; ->f1 : () => { [P in keyof T1]: void; } -> : ^ ^^^^^^^ +>f1 : () => { [P in keyof T1]: void; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ declare function f2(): { [P in keyof T1]: void }; >f2 : () => { [P in keyof T1]: void; } @@ -124,8 +124,8 @@ let x1 = f1(); > : ^^ >f1() : {} > : ^^ ->f1 : () => { [P in keyof T1]: void; } -> : ^ ^^^^^^^ +>f1 : () => { [P in keyof T1]: void; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ let x2 = f2(); >x2 : string diff --git a/tests/baselines/reference/mappedTypes2.types b/tests/baselines/reference/mappedTypes2.types index d1225adb76505..2adb0ae96ce49 100644 --- a/tests/baselines/reference/mappedTypes2.types +++ b/tests/baselines/reference/mappedTypes2.types @@ -2,8 +2,8 @@ === mappedTypes2.ts === function verifyLibTypes() { ->verifyLibTypes : () => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^ +>verifyLibTypes : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ var x1: Partial; >x1 : Partial @@ -68,30 +68,30 @@ type DeepReadonly = { }; declare function assign(obj: T, props: Partial): void; ->assign : (obj: T, props: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assign : (obj: T, props: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >props : Partial > : ^^^^^^^^^^ declare function freeze(obj: T): Readonly; ->freeze : (obj: T) => Readonly -> : ^ ^^ ^^ ^^^^^ +>freeze : (obj: T) => Readonly +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ declare function pick(obj: T, ...keys: K[]): Pick; ->pick : (obj: T, ...keys: K[]) => Pick -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>pick : (obj: T, ...keys: K[]) => Pick +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >obj : T > : ^ >keys : K[] > : ^^^ declare function mapObject(obj: Record, f: (x: T) => U): Record; ->mapObject : (obj: Record, f: (x: T) => U) => Record -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>mapObject : (obj: Record, f: (x: T) => U) => Record +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : Record > : ^^^^^^^^^^^^ >f : (x: T) => U @@ -100,8 +100,8 @@ declare function mapObject(obj: Record, f: (x: T) > : ^ declare function proxify(obj: T): Proxify; ->proxify : (obj: T) => Proxify -> : ^ ^^ ^^ ^^^^^ +>proxify : (obj: T) => Proxify +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ @@ -180,8 +180,8 @@ function f0(s1: Shape, s2: Shape) { assign(s1, { name: "circle" }); >assign(s1, { name: "circle" }) : void > : ^^^^ ->assign : (obj: T, props: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assign : (obj: T, props: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >s1 : Shape > : ^^^^^ >{ name: "circle" } : { name: string; } @@ -194,8 +194,8 @@ function f0(s1: Shape, s2: Shape) { assign(s2, { width: 10, height: 20 }); >assign(s2, { width: 10, height: 20 }) : void > : ^^^^ ->assign : (obj: T, props: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assign : (obj: T, props: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >s2 : Shape > : ^^^^^ >{ width: 10, height: 20 } : { width: number; height: number; } @@ -229,8 +229,8 @@ function f1(shape: Shape) { > : ^^^^^^^^^^^^^ >freeze(shape) : Readonly > : ^^^^^^^^^^^^^^^ ->freeze : (obj: T) => Readonly -> : ^ ^^ ^^ ^^^^^ +>freeze : (obj: T) => Readonly +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >shape : Shape > : ^^^^^ } @@ -267,8 +267,8 @@ function f3(shape: Shape) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pick(shape, "name", "location") : Pick > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pick : (obj: T, ...keys: K[]) => Pick -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>pick : (obj: T, ...keys: K[]) => Pick +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >shape : Shape > : ^^^^^ >"name" : "name" @@ -304,8 +304,8 @@ function f4() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >mapObject(rec, s => s.length) : Record<"foo" | "bar" | "baz", number> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->mapObject : (obj: Record, f: (x: T) => U) => Record -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>mapObject : (obj: Record, f: (x: T) => U) => Record +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >rec : { foo: string; bar: string; baz: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s => s.length : (s: string) => number @@ -331,8 +331,8 @@ function f5(shape: Shape) { > : ^^^^^^^^^^^^^^ >proxify(shape) : Proxify > : ^^^^^^^^^^^^^^ ->proxify : (obj: T) => Proxify -> : ^ ^^ ^^ ^^^^^ +>proxify : (obj: T) => Proxify +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >shape : Shape > : ^^^^^ diff --git a/tests/baselines/reference/mappedTypes4.types b/tests/baselines/reference/mappedTypes4.types index 79c32add1b52a..476bc67533641 100644 --- a/tests/baselines/reference/mappedTypes4.types +++ b/tests/baselines/reference/mappedTypes4.types @@ -15,8 +15,8 @@ type Boxified = { }; function boxify(obj: T): Boxified { ->boxify : (obj: T) => Boxified -> : ^ ^^ ^^ ^^^^^ +>boxify : (obj: T) => Boxified +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T > : ^ @@ -101,8 +101,8 @@ function f1(x: A | B | C | undefined) { return boxify(x); >boxify(x) : Boxified > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->boxify : (obj: T) => Boxified -> : ^ ^^ ^^ ^^^^^ +>boxify : (obj: T) => Boxified +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A | B | C | undefined > : ^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/mappedTypes5.types b/tests/baselines/reference/mappedTypes5.types index 6af8925bca196..c218c758802ad 100644 --- a/tests/baselines/reference/mappedTypes5.types +++ b/tests/baselines/reference/mappedTypes5.types @@ -2,8 +2,8 @@ === mappedTypes5.ts === function f(p: Partial, r: Readonly, pr: Partial>, rp: Readonly>) { ->f : (p: Partial, r: Readonly, pr: Partial>, rp: Readonly>) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f : (p: Partial, r: Readonly, pr: Partial>, rp: Readonly>) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >p : Partial > : ^^^^^^^^^^ >r : Readonly diff --git a/tests/baselines/reference/mappedTypes6.errors.txt b/tests/baselines/reference/mappedTypes6.errors.txt index 5138f66afc493..2a49a70e0a31e 100644 --- a/tests/baselines/reference/mappedTypes6.errors.txt +++ b/tests/baselines/reference/mappedTypes6.errors.txt @@ -66,7 +66,6 @@ mappedTypes6.ts(120,4): error TS2540: Cannot assign to 'b' because it is a read- x = y; // Error ~ !!! error TS2322: Type 'T' is not assignable to type 'Required'. -!!! related TS2208 mappedTypes6.ts:21:13: This type parameter might need an `extends Required` constraint. x = z; // Error ~ !!! error TS2322: Type 'Partial' is not assignable to type 'Required'. @@ -109,7 +108,6 @@ mappedTypes6.ts(120,4): error TS2540: Cannot assign to 'b' because it is a read- w = y; // Error ~ !!! error TS2322: Type 'T' is not assignable to type 'Denullified'. -!!! related TS2208 mappedTypes6.ts:35:13: This type parameter might need an `extends Denullified` constraint. w = z; // Error ~ !!! error TS2322: Type 'Partial' is not assignable to type 'Denullified'. @@ -118,7 +116,6 @@ mappedTypes6.ts(120,4): error TS2540: Cannot assign to 'b' because it is a read- x = y; // Error ~ !!! error TS2322: Type 'T' is not assignable to type 'Required'. -!!! related TS2208 mappedTypes6.ts:35:13: This type parameter might need an `extends Required` constraint. x = z; // Error ~ !!! error TS2322: Type 'Partial' is not assignable to type 'Required'. diff --git a/tests/baselines/reference/mappedTypes6.types b/tests/baselines/reference/mappedTypes6.types index 6474f0a30a891..469c97b58c5e2 100644 --- a/tests/baselines/reference/mappedTypes6.types +++ b/tests/baselines/reference/mappedTypes6.types @@ -66,8 +66,8 @@ type T15 = { -readonly [P in keyof T]-?: T[P] }; > : ^^^^^^ function f1(x: Required, y: T, z: Partial) { ->f1 : (x: Required, y: T, z: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: Required, y: T, z: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Required > : ^^^^^^^^^^^ >y : T @@ -153,8 +153,8 @@ type Denullified = { [P in keyof T]-?: NonNullable }; > : ^^^^^^^^^^^^^^ function f2(w: Denullified, x: Required, y: T, z: Partial) { ->f2 : (w: Denullified, x: Required, y: T, z: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f2 : (w: Denullified, x: Required, y: T, z: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >w : Denullified > : ^^^^^^^^^^^^^^ >x : Required @@ -295,8 +295,8 @@ function f2(w: Denullified, x: Required, y: T, z: Partial) { function f3(w: Denullified, x: Required, y: T, z: Partial) { ->f3 : (w: Denullified, x: Required, y: T, z: Partial) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f3 : (w: Denullified, x: Required, y: T, z: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >w : Denullified > : ^^^^^^^^^^^^^^ >x : Required @@ -347,8 +347,8 @@ type Readwrite = { } function f10(x: Readonly, y: T, z: Readwrite) { ->f10 : (x: Readonly, y: T, z: Readwrite) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f10 : (x: Readonly, y: T, z: Readwrite) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Readonly > : ^^^^^^^^^^^ >y : T diff --git a/tests/baselines/reference/mappedTypesAndObjects.errors.txt b/tests/baselines/reference/mappedTypesAndObjects.errors.txt index cd6d8c7541e87..75e077d668ff4 100644 --- a/tests/baselines/reference/mappedTypesAndObjects.errors.txt +++ b/tests/baselines/reference/mappedTypesAndObjects.errors.txt @@ -33,7 +33,6 @@ mappedTypesAndObjects.ts(25,11): error TS2430: Interface 'E1' incorrectly ext !!! error TS2430: Interface 'E1' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'foo' are incompatible. !!! error TS2430: Type 'T' is not assignable to type '{ [key: string]: any; }'. -!!! related TS2208 mappedTypesAndObjects.ts:25:14: This type parameter might need an `extends { [key: string]: any; }` constraint. foo: T; } diff --git a/tests/baselines/reference/mappedTypesAndObjects.types b/tests/baselines/reference/mappedTypesAndObjects.types index 77a60075fbe09..9219852e4d0a3 100644 --- a/tests/baselines/reference/mappedTypesAndObjects.types +++ b/tests/baselines/reference/mappedTypesAndObjects.types @@ -2,8 +2,8 @@ === mappedTypesAndObjects.ts === function f1(x: Partial, y: Readonly) { ->f1 : (x: Partial, y: Readonly) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: Partial, y: Readonly) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Partial > : ^^^^^^^^^^ >y : Readonly @@ -31,8 +31,8 @@ function f1(x: Partial, y: Readonly) { } function f2(x: Partial, y: Readonly) { ->f2 : (x: Partial, y: Readonly) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f2 : (x: Partial, y: Readonly) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Partial > : ^^^^^^^^^^ >y : Readonly @@ -62,8 +62,8 @@ function f2(x: Partial, y: Readonly) { } function f3(x: Partial) { ->f3 : (x: Partial) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f3 : (x: Partial) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : Partial > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/mappedTypesArraysTuples.types b/tests/baselines/reference/mappedTypesArraysTuples.types index 5f2dc69223c9e..637e866ed036c 100644 --- a/tests/baselines/reference/mappedTypesArraysTuples.types +++ b/tests/baselines/reference/mappedTypesArraysTuples.types @@ -120,8 +120,8 @@ type T54 = ReadWrite>; > : ^^^^^^^^ declare function unboxify(x: Boxified): T; ->unboxify : (x: Boxified) => T -> : ^ ^^ ^^ ^^^^^ +>unboxify : (x: Boxified) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Boxified > : ^^^^^^^^^^^ @@ -134,8 +134,8 @@ let y10 = unboxify(x10); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify(x10) : [number, string, ...boolean[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->unboxify : (x: Boxified) => T -> : ^ ^^ ^^ ^^^^^ +>unboxify : (x: Boxified) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x10 : [Box, Box, ...Box[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -148,8 +148,8 @@ let y11 = unboxify(x11); > : ^^^^^^^^ >unboxify(x11) : number[] > : ^^^^^^^^ ->unboxify : (x: Boxified) => T -> : ^ ^^ ^^ ^^^^^ +>unboxify : (x: Boxified) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x11 : Box[] > : ^^^^^^^^^^^^^ @@ -166,14 +166,14 @@ let y12 = unboxify(x12); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >unboxify(x12) : { a: number; b: string[]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->unboxify : (x: Boxified) => T -> : ^ ^^ ^^ ^^^^^ +>unboxify : (x: Boxified) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x12 : { a: Box; b: Box; } > : ^^^^^ ^^^^^ ^^^ declare function nonpartial(x: Partial): T; ->nonpartial : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>nonpartial : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Partial > : ^^^^^^^^^^ @@ -186,8 +186,8 @@ let y20 = nonpartial(x20); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >nonpartial(x20) : [number, string, ...boolean[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->nonpartial : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>nonpartial : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x20 : [number | undefined, (string | undefined)?, ...boolean[]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -200,8 +200,8 @@ let y21 = nonpartial(x21); > : ^^^^^^^^ >nonpartial(x21) : number[] > : ^^^^^^^^ ->nonpartial : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>nonpartial : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x21 : (number | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -218,8 +218,8 @@ let y22 = nonpartial(x22); > : ^^^^^^^^^^^^^^^^ ^^^ >nonpartial(x22) : { a: number; b: string[]; } > : ^^^^^^^^^^^^^^^^ ^^^ ->nonpartial : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>nonpartial : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x22 : { a: number | undefined; b?: string[]; } > : ^^^^^ ^^^^^^ ^^^ diff --git a/tests/baselines/reference/mappedTypesGenericTuples2.types b/tests/baselines/reference/mappedTypesGenericTuples2.types index 07694eba180f6..231d844442977 100644 --- a/tests/baselines/reference/mappedTypesGenericTuples2.types +++ b/tests/baselines/reference/mappedTypesGenericTuples2.types @@ -4,34 +4,34 @@ // https://github.com/microsoft/TypeScript/issues/57389 declare function getT(): T; ->getT : () => T -> : ^ ^^^^^^^ +>getT : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ Promise.all([getT(), ...getT()]).then((result) => { >Promise.all([getT(), ...getT()]).then((result) => { const head = result[0]; // string const tail = result.slice(1); // any[] tail satisfies string[]; // ok}) : Promise > : ^^^^^^^^^^^^^ ->Promise.all([getT(), ...getT()]).then : (onfulfilled?: ((value: [string, ...any[]]) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Promise.all([getT(), ...getT()]).then : (onfulfilled?: ((value: [string, ...any[]]) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Promise.all([getT(), ...getT()]) : Promise<[string, ...any[]]> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >[getT(), ...getT()] : [string, ...any[]] > : ^^^^^^^^^^^^^^^^^^ >getT() : string > : ^^^^^^ ->getT : () => T -> : ^ ^^^^^^^ +>getT : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >...getT() : any >getT() : any ->getT : () => T -> : ^ ^^^^^^^ ->then : (onfulfilled?: ((value: [string, ...any[]]) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>getT : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: [string, ...any[]]) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(result) => { const head = result[0]; // string const tail = result.slice(1); // any[] tail satisfies string[]; // ok} : (result: [string, ...any[]]) => void > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >result : [string, ...any[]] diff --git a/tests/baselines/reference/multipleInferenceContexts.types b/tests/baselines/reference/multipleInferenceContexts.types index a5ec569ebd7e1..24666c189ef0a 100644 --- a/tests/baselines/reference/multipleInferenceContexts.types +++ b/tests/baselines/reference/multipleInferenceContexts.types @@ -27,8 +27,8 @@ interface Instance { } declare var Moon: { ->Moon : (options?: ConstructorOptions) => Instance -> : ^ ^^ ^^^ ^^^^^ +>Moon : (options?: ConstructorOptions) => Instance +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ (options?: ConstructorOptions): Instance; >options : ConstructorOptions | undefined @@ -41,8 +41,8 @@ const r2 = Moon({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >Moon({ data: { msg: "" }, render() { const h = (x: unknown) => x; return h(this.get("msg")); },}) : Instance<{ msg: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Moon : (options?: ConstructorOptions) => Instance -> : ^ ^^ ^^^ ^^^^^ +>Moon : (options?: ConstructorOptions) => Instance +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >{ data: { msg: "" }, render() { const h = (x: unknown) => x; return h(this.get("msg")); },} : { data: { msg: string; }; render(): unknown; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/narrowingMutualSubtypes.types b/tests/baselines/reference/narrowingMutualSubtypes.types index fdb0711a36788..294461e05faea 100644 --- a/tests/baselines/reference/narrowingMutualSubtypes.types +++ b/tests/baselines/reference/narrowingMutualSubtypes.types @@ -284,8 +284,8 @@ type Self = T extends unknown ? Identity : never; > : ^^^^^^^ function is(value: T): value is Self { ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T > : ^ @@ -313,64 +313,64 @@ function example(x: Union) { if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ if (is(x)) {} >is(x) : boolean > : ^^^^^^^ ->is : (value: T) => value is Self -> : ^ ^^ ^^ ^^^^^ +>is : (value: T) => value is Self +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Union > : ^^^^^ diff --git a/tests/baselines/reference/narrowingNoInfer1.types b/tests/baselines/reference/narrowingNoInfer1.types index 690fcaa27be25..60f9736446484 100644 --- a/tests/baselines/reference/narrowingNoInfer1.types +++ b/tests/baselines/reference/narrowingNoInfer1.types @@ -28,8 +28,8 @@ const m: { result: NoInfer }[] = []; > : ^^^^^^^ function map(items: readonly A[], f: (a: NoInfer) => B) { ->map : (items: readonly A[], f: (a: NoInfer) => B) => B[] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ +>map : (items: readonly A[], f: (a: NoInfer) => B) => B[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^ >items : readonly A[] > : ^^^^^^^^^^^^ >f : (a: NoInfer) => B @@ -40,12 +40,12 @@ function map(items: readonly A[], f: (a: NoInfer) => B) { return items.map(f); >items.map(f) : B[] > : ^^^ ->items.map : (callbackfn: (value: A, index: number, array: readonly A[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>items.map : (callbackfn: (value: A, index: number, array: readonly A[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >items : readonly A[] > : ^^^^^^^^^^^^ ->map : (callbackfn: (value: A, index: number, array: readonly A[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: A, index: number, array: readonly A[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >f : (a: NoInfer) => B > : ^ ^^ ^^^^^ } @@ -55,8 +55,8 @@ const something = map(m, (_) => > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >map(m, (_) => _.result._tag === "a" ? { ..._, result: _.result } : null,) : ({ result: TaggedA; } | null)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->map : (items: readonly A[], f: (a: NoInfer) => B) => B[] -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^ +>map : (items: readonly A[], f: (a: NoInfer) => B) => B[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^ >m : { result: NoInfer; }[] > : ^^^^^^^^^^ ^^^^^ >(_) => _.result._tag === "a" ? { ..._, result: _.result } : null : (_: NoInfer<{ result: NoInfer; }>) => { result: TaggedA; } | null @@ -97,8 +97,8 @@ const something = map(m, (_) => ); declare function test2(a: T1, b: T2, cb: (thing: NoInfer | NoInfer) => void): void; ->test2 : (a: T1, b: T2, cb: (thing: NoInfer | NoInfer) => void) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>test2 : (a: T1, b: T2, cb: (thing: NoInfer | NoInfer) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : T1 > : ^^ >b : T2 @@ -111,8 +111,8 @@ declare function test2(a: T1, b: T2, cb: (thing: NoInfer | NoInfer { >test2({ type: 'a' as const }, { type: 'b' as const }, (thing) => { if (thing.type === "a") { thing; } else { thing; }}) : void > : ^^^^ ->test2 : (a: T1, b: T2, cb: (thing: NoInfer | NoInfer) => void) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>test2 : (a: T1, b: T2, cb: (thing: NoInfer | NoInfer) => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >{ type: 'a' as const } : { type: "a"; } > : ^^^^^^^^^^^^^^ >type : "a" diff --git a/tests/baselines/reference/narrowingTypeofFunction.types b/tests/baselines/reference/narrowingTypeofFunction.types index 963f10069c4c1..95548c6002245 100644 --- a/tests/baselines/reference/narrowingTypeofFunction.types +++ b/tests/baselines/reference/narrowingTypeofFunction.types @@ -37,8 +37,8 @@ function f1(a: (F & Meta) | string) { } function f2(x: (T & F) | T & string) { ->f2 : (x: (T & F) | (T & string)) => void -> : ^ ^^ ^^ ^ ^^^^^^^^^^ +>f2 : (x: (T & F) | (T & string)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^ ^^^^^^^^^^ >x : (T & F) | (T & string) > : ^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/narrowingUnionToUnion.types b/tests/baselines/reference/narrowingUnionToUnion.types index f090c9357be17..7617c961541cb 100644 --- a/tests/baselines/reference/narrowingUnionToUnion.types +++ b/tests/baselines/reference/narrowingUnionToUnion.types @@ -34,8 +34,8 @@ function fx1(x: string | number | undefined) { } function fx2(x: T | undefined) { ->fx2 : (x: T | undefined) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fx2 : (x: T | undefined) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T | undefined > : ^^^^^^^^^^^^^ @@ -295,14 +295,14 @@ declare function isMaybeZero(value: number | null | undefined): value is 0 | nul > : ^^^^^^^^^^^^^^^^^^^^^^^^^ declare function isEmptyArray(value: T[]): value is []; ->isEmptyArray : (value: T[]) => value is [] -> : ^ ^^ ^^ ^^^^^ +>isEmptyArray : (value: T[]) => value is [] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T[] > : ^^^ declare function isMaybeEmptyArray(value: T[] | null | undefined): value is [] | null | undefined; ->isMaybeEmptyArray : (value: T[] | null | undefined) => value is [] | null | undefined -> : ^ ^^ ^^ ^^^^^ +>isMaybeEmptyArray : (value: T[] | null | undefined) => value is [] | null | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T[] | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -451,8 +451,8 @@ const TEST_CASES = [ if (isEmptyArray(value)) { >isEmptyArray(value) : boolean > : ^^^^^^^ ->isEmptyArray : (value: T[]) => value is [] -> : ^ ^^ ^^ ^^^^^ +>isEmptyArray : (value: T[]) => value is [] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : string[] > : ^^^^^^^^ @@ -468,8 +468,8 @@ const TEST_CASES = [ if (isMaybeEmptyArray(value)) { >isMaybeEmptyArray(value) : boolean > : ^^^^^^^ ->isMaybeEmptyArray : (value: T[] | null | undefined) => value is [] | null | undefined -> : ^ ^^ ^^ ^^^^^ +>isMaybeEmptyArray : (value: T[] | null | undefined) => value is [] | null | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : string[] > : ^^^^^^^^ @@ -492,8 +492,8 @@ const TEST_CASES = [ if (isMaybeEmptyArray(value)) { >isMaybeEmptyArray(value) : boolean > : ^^^^^^^ ->isMaybeEmptyArray : (value: T[] | null | undefined) => value is [] | null | undefined -> : ^ ^^ ^^ ^^^^^ +>isMaybeEmptyArray : (value: T[] | null | undefined) => value is [] | null | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : string[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ @@ -564,8 +564,8 @@ if (isEmpty(test)) { // Repro from #43825 declare function assert(value: any): asserts value is T ->assert : (value: any) => asserts value is T -> : ^ ^^ ^^ ^^^^^ +>assert : (value: any) => asserts value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : any function test1(foo: number | string | boolean) { @@ -577,8 +577,8 @@ function test1(foo: number | string | boolean) { assert<1 | string>(foo); >assert<1 | string>(foo) : void > : ^^^^ ->assert : (value: any) => asserts value is T -> : ^ ^^ ^^ ^^^^^ +>assert : (value: any) => asserts value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >foo : string | number | boolean > : ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/nestedGenericSpreadInference.types b/tests/baselines/reference/nestedGenericSpreadInference.types index 1d13f4dd71d70..3e7f77f3f50aa 100644 --- a/tests/baselines/reference/nestedGenericSpreadInference.types +++ b/tests/baselines/reference/nestedGenericSpreadInference.types @@ -2,16 +2,16 @@ === nestedGenericSpreadInference.ts === declare function wrap(x: X): { x: X }; ->wrap : (x: X) => { x: X; } -> : ^ ^^ ^^ ^^^^^ +>wrap : (x: X) => { x: X; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : X > : ^ >x : X > : ^ declare function call(x: { x: (...args: A) => T }, ...args: A): T; ->call : (x: { x: (...args: A) => T; }, ...args: A) => T -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (x: { x: (...args: A) => T; }, ...args: A) => T +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >x : { x: (...args: A) => T; } > : ^^^^^ ^^^ >x : (...args: A) => T @@ -27,14 +27,14 @@ const leak = call(wrap((x: T) => x), 1); > : ^^^^^^ >call(wrap((x: T) => x), 1) : number > : ^^^^^^ ->call : (x: { x: (...args: A) => T; }, ...args: A) => T -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (x: { x: (...args: A) => T; }, ...args: A) => T +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >wrap((x: T) => x) : { x: (x: A[0]) => A[0]; } > : ^^^^^^ ^^^^^^^^^^^^^^^^^^ ->wrap : (x: X) => { x: X; } -> : ^ ^^ ^^ ^^^^^ ->(x: T) => x : (x: T) => T -> : ^ ^^ ^^ ^^^^^^ +>wrap : (x: X) => { x: X; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(x: T) => x : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : T > : ^ >x : T diff --git a/tests/baselines/reference/neverInference.types b/tests/baselines/reference/neverInference.types index f2234fd52941f..099fef4415fd6 100644 --- a/tests/baselines/reference/neverInference.types +++ b/tests/baselines/reference/neverInference.types @@ -2,8 +2,8 @@ === neverInference.ts === declare function f1(x: T[]): T; ->f1 : (x: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>f1 : (x: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T[] > : ^^^ @@ -18,8 +18,8 @@ let a1 = f1([]); // never > : ^^^^^ >f1([]) : never > : ^^^^^ ->f1 : (x: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>f1 : (x: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[] : never[] > : ^^^^^^^ @@ -28,8 +28,8 @@ let a2 = f1(neverArray); // never > : ^^^^^ >f1(neverArray) : never > : ^^^^^ ->f1 : (x: T[]) => T -> : ^ ^^ ^^ ^^^^^ +>f1 : (x: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >neverArray : never[] > : ^^^^^^^ @@ -70,8 +70,8 @@ declare function compareNumbers(x: number, y: number): number; > : ^^^^^^ declare function mkList(items: T[], comparator: Comparator): LinkedList; ->mkList : (items: T[], comparator: Comparator) => LinkedList -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>mkList : (items: T[], comparator: Comparator) => LinkedList +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >items : T[] > : ^^^ >comparator : Comparator @@ -82,8 +82,8 @@ const list: LinkedList = mkList([], compareNumbers); > : ^^^^^^^^^^^^^^^^^^ >mkList([], compareNumbers) : LinkedList > : ^^^^^^^^^^^^^^^^^^ ->mkList : (items: T[], comparator: Comparator) => LinkedList -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>mkList : (items: T[], comparator: Comparator) => LinkedList +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >[] : never[] > : ^^^^^^^ >compareNumbers : (x: number, y: number) => number @@ -92,8 +92,8 @@ const list: LinkedList = mkList([], compareNumbers); // Repro from #19858 declare function f2(as1: a[], as2: a[], cmp: (a1: a, a2: a) => number): void; ->f2 : (as1: a[], as2: a[], cmp: (a1: a, a2: a) => number) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f2 : (as1: a[], as2: a[], cmp: (a1: a, a2: a) => number) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >as1 : a[] > : ^^^ >as2 : a[] @@ -108,16 +108,16 @@ declare function f2(as1: a[], as2: a[], cmp: (a1: a, a2: a) => number): void; f2(Array.from([0]), [], (a1, a2) => a1 - a2); >f2(Array.from([0]), [], (a1, a2) => a1 - a2) : void > : ^^^^ ->f2 : (as1: a[], as2: a[], cmp: (a1: a, a2: a) => number) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f2 : (as1: a[], as2: a[], cmp: (a1: a, a2: a) => number) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Array.from([0]) : number[] > : ^^^^^^^^ ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ ->from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >[0] : number[] > : ^^^^^^^^ >0 : 0 @@ -140,16 +140,16 @@ f2(Array.from([0]), [], (a1, a2) => a1 - a2); f2(Array.from([]), [0], (a1, a2) => a1 - a2); >f2(Array.from([]), [0], (a1, a2) => a1 - a2) : void > : ^^^^ ->f2 : (as1: a[], as2: a[], cmp: (a1: a, a2: a) => number) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f2 : (as1: a[], as2: a[], cmp: (a1: a, a2: a) => number) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >Array.from([]) : never[] > : ^^^^^^^ ->Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>Array.from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >Array : ArrayConstructor > : ^^^^^^^^^^^^^^^^ ->from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ +>from : { (arrayLike: ArrayLike): T[]; (arrayLike: ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; (iterable: Iterable | ArrayLike): T[]; (iterable: Iterable | ArrayLike, mapfn: (v: T, k: number) => U, thisArg?: any): U[]; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ >[] : never[] > : ^^^^^^^ >[0] : number[] diff --git a/tests/baselines/reference/neverType.types b/tests/baselines/reference/neverType.types index 9d75ae4fb7027..084487422a5c7 100644 --- a/tests/baselines/reference/neverType.types +++ b/tests/baselines/reference/neverType.types @@ -166,8 +166,8 @@ function move2(direction: "up" | "down") { } function check(x: T | undefined) { ->check : (x: T | undefined) => NonNullable -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>check : (x: T | undefined) => NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : T | undefined > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/noCrashOnThisTypeUsage.types b/tests/baselines/reference/noCrashOnThisTypeUsage.types index f65f88aa9b65f..e95dfa845f41b 100644 --- a/tests/baselines/reference/noCrashOnThisTypeUsage.types +++ b/tests/baselines/reference/noCrashOnThisTypeUsage.types @@ -18,8 +18,8 @@ interface IListenable { } function notifyListeners(listenable: IListenable, change: T) { ->notifyListeners : (listenable: IListenable, change: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>notifyListeners : (listenable: IListenable, change: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >listenable : IListenable > : ^^^^^^^^^^^ >change : T @@ -48,8 +48,8 @@ export class ObservableValue { notifyListeners(this, { >notifyListeners(this, { type: "update", object: this, newValue, oldValue }) : void > : ^^^^ ->notifyListeners : (listenable: IListenable, change: T_1) => void -> : ^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ +>notifyListeners : (listenable: IListenable, change: T_1) => void +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >{ type: "update", object: this, newValue, oldValue } : { type: string; object: this; newValue: T; oldValue: any; } diff --git a/tests/baselines/reference/noExcessiveStackDepthError.types b/tests/baselines/reference/noExcessiveStackDepthError.types index d33c34ecda4db..67f8a0de8cad8 100644 --- a/tests/baselines/reference/noExcessiveStackDepthError.types +++ b/tests/baselines/reference/noExcessiveStackDepthError.types @@ -17,8 +17,8 @@ type FindConditions = { }; function foo() { ->foo : () => void -> : ^ ^^^^^^^^^^^ +>foo : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ var x: FindConditions; >x : FindConditions diff --git a/tests/baselines/reference/noImplicitReturnsExclusions.types b/tests/baselines/reference/noImplicitReturnsExclusions.types index aa62f01d430ae..64f178bd3b6f2 100644 --- a/tests/baselines/reference/noImplicitReturnsExclusions.types +++ b/tests/baselines/reference/noImplicitReturnsExclusions.types @@ -207,8 +207,8 @@ declare class HistoryItem { interface Thenable { then( ->then : { (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable; (onfulfilled?: (value: T) => TResult_1 | Thenable, onrejected?: (reason: any) => void): Thenable; } -> : ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^^ +>then : { (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => TResult | Thenable): Thenable; (onfulfilled?: (value: T) => TResult_1 | Thenable, onrejected?: (reason: any) => void): Thenable; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^^ onfulfilled?: (value: T) => TResult | Thenable, >onfulfilled : ((value: T) => TResult | Thenable) | undefined @@ -224,8 +224,8 @@ interface Thenable { ): Thenable; then( ->then : { (onfulfilled?: (value: T) => TResult_1 | Thenable, onrejected?: (reason: any) => TResult_1 | Thenable): Thenable; (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable; } -> : ^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^ ^^^ ^^ ^^^ ^^^ ^^^ +>then : { (onfulfilled?: (value: T) => TResult_1 | Thenable, onrejected?: (reason: any) => TResult_1 | Thenable): Thenable; (onfulfilled?: (value: T) => TResult | Thenable, onrejected?: (reason: any) => void): Thenable; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^^ onfulfilled?: (value: T) => TResult | Thenable, >onfulfilled : ((value: T) => TResult | Thenable) | undefined @@ -243,8 +243,8 @@ interface Thenable { } export declare function executeCommand( ->executeCommand : (command: string, ...rest: any[]) => Thenable -> : ^ ^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ +>executeCommand : (command: string, ...rest: any[]) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ command: string, >command : string @@ -299,8 +299,8 @@ registerCommand("_references-view.showHistoryItem", async (item) => { // Error, return executeCommand("vscode.open", item.input.location.uri); >executeCommand("vscode.open", item.input.location.uri) : Thenable > : ^^^^^^^^^^^^^^^^^ ->executeCommand : (command: string, ...rest: any[]) => Thenable -> : ^ ^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ +>executeCommand : (command: string, ...rest: any[]) => Thenable +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >"vscode.open" : "vscode.open" > : ^^^^^^^^^^^^^ >item.input.location.uri : string diff --git a/tests/baselines/reference/noInfer.types b/tests/baselines/reference/noInfer.types index 81317b609675a..fe84ba28f7644 100644 --- a/tests/baselines/reference/noInfer.types +++ b/tests/baselines/reference/noInfer.types @@ -210,8 +210,8 @@ declare class Dog extends Animal { woof(): void } > : ^^^^^^ declare function doSomething(value: T, getDefault: () => NoInfer): void; ->doSomething : (value: T, getDefault: () => NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doSomething : (value: T, getDefault: () => NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >getDefault : () => NoInfer @@ -220,8 +220,8 @@ declare function doSomething(value: T, getDefault: () => NoInfer): void; doSomething(new Animal(), () => new Animal()); // ok >doSomething(new Animal(), () => new Animal()) : void > : ^^^^ ->doSomething : (value: T, getDefault: () => NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doSomething : (value: T, getDefault: () => NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >new Animal() : Animal > : ^^^^^^ >Animal : typeof Animal @@ -236,8 +236,8 @@ doSomething(new Animal(), () => new Animal()); // ok doSomething(new Animal(), () => new Dog()); // ok >doSomething(new Animal(), () => new Dog()) : void > : ^^^^ ->doSomething : (value: T, getDefault: () => NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doSomething : (value: T, getDefault: () => NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >new Animal() : Animal > : ^^^^^^ >Animal : typeof Animal @@ -252,8 +252,8 @@ doSomething(new Animal(), () => new Dog()); // ok doSomething(new Dog(), () => new Animal()); // error >doSomething(new Dog(), () => new Animal()) : void > : ^^^^ ->doSomething : (value: T, getDefault: () => NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doSomething : (value: T, getDefault: () => NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >new Dog() : Dog > : ^^^ >Dog : typeof Dog @@ -266,8 +266,8 @@ doSomething(new Dog(), () => new Animal()); // error > : ^^^^^^^^^^^^^ declare function assertEqual(actual: T, expected: NoInfer): boolean; ->assertEqual : (actual: T, expected: NoInfer) => boolean -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assertEqual : (actual: T, expected: NoInfer) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >actual : T > : ^ >expected : NoInfer @@ -276,8 +276,8 @@ declare function assertEqual(actual: T, expected: NoInfer): boolean; assertEqual({ x: 1 }, { x: 3 }); // ok >assertEqual({ x: 1 }, { x: 3 }) : boolean > : ^^^^^^^ ->assertEqual : (actual: T, expected: NoInfer) => boolean -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assertEqual : (actual: T, expected: NoInfer) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ x: 1 } : { x: number; } > : ^^^^^^^^^^^^^^ >x : number @@ -308,8 +308,8 @@ const g = { x: 3, y: 2 }; assertEqual(g, { x: 3 }); // error >assertEqual(g, { x: 3 }) : boolean > : ^^^^^^^ ->assertEqual : (actual: T, expected: NoInfer) => boolean -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>assertEqual : (actual: T, expected: NoInfer) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >g : { x: number; y: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: 3 } : { x: number; } @@ -320,8 +320,8 @@ assertEqual(g, { x: 3 }); // error > : ^ declare function invoke(func: (value: T) => R, value: NoInfer): R; ->invoke : (func: (value: T) => R, value: NoInfer) => R -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>invoke : (func: (value: T) => R, value: NoInfer) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >func : (value: T) => R > : ^ ^^ ^^^^^ >value : T @@ -340,8 +340,8 @@ declare function test(value: { x: number; }): number; invoke(test, { x: 1, y: 2 }); // error >invoke(test, { x: 1, y: 2 }) : number > : ^^^^^^ ->invoke : (func: (value: T) => R, value: NoInfer) => R -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>invoke : (func: (value: T) => R, value: NoInfer) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >test : (value: { x: number; }) => number > : ^ ^^ ^^^^^ >{ x: 1, y: 2 } : { x: number; y: number; } @@ -378,8 +378,8 @@ type Component = { props: Props; }; > : ^^^^^ declare function doWork(Component: Component, props: NoInfer): void; ->doWork : (Component: Component, props: NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doWork : (Component: Component, props: NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >Component : Component > : ^^^^^^^^^^^^^^^^ >props : NoInfer @@ -394,8 +394,8 @@ declare const comp: Component<{ foo: number }>; doWork(comp, { foo: 42 }); // ok >doWork(comp, { foo: 42 }) : void > : ^^^^ ->doWork : (Component: Component, props: NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doWork : (Component: Component, props: NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >comp : Component<{ foo: number; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ >{ foo: 42 } : { foo: number; } @@ -408,16 +408,16 @@ doWork(comp, { foo: 42 }); // ok doWork(comp, {}); // error >doWork(comp, {}) : void > : ^^^^ ->doWork : (Component: Component, props: NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>doWork : (Component: Component, props: NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >comp : Component<{ foo: number; }> > : ^^^^^^^^^^^^^^^^^ ^^^^ >{} : {} > : ^^ declare function mutate(callback: (a: NoInfer, b: number) => T): T; ->mutate : (callback: (a: NoInfer, b: number) => T) => T -> : ^ ^^ ^^ ^^^^^ +>mutate : (callback: (a: NoInfer, b: number) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >callback : (a: NoInfer, b: number) => T > : ^ ^^ ^^ ^^ ^^^^^ >a : NoInfer @@ -430,8 +430,8 @@ const mutate1 = mutate((a, b) => b); > : ^^^^^^^ >mutate((a, b) => b) : unknown > : ^^^^^^^ ->mutate : (callback: (a: NoInfer, b: number) => T) => T -> : ^ ^^ ^^ ^^^^^ +>mutate : (callback: (a: NoInfer, b: number) => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(a, b) => b : (a: unknown, b: number) => number > : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ >a : unknown diff --git a/tests/baselines/reference/noInferCommonPropertyCheck1.types b/tests/baselines/reference/noInferCommonPropertyCheck1.types index af16a58da11d4..6cbffff295f3f 100644 --- a/tests/baselines/reference/noInferCommonPropertyCheck1.types +++ b/tests/baselines/reference/noInferCommonPropertyCheck1.types @@ -24,8 +24,8 @@ declare const someObj1: { x: string }; > : ^^^^^^ declare function test1(a: T, b: NoInfer & { prop?: unknown }): void; ->test1 : (a: T, b: NoInfer & { prop?: unknown; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test1 : (a: T, b: NoInfer & { prop?: unknown; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : NoInfer & { prop?: unknown; } @@ -36,16 +36,16 @@ declare function test1(a: T, b: NoInfer & { prop?: unknown }): void; test1(partialObj1, someObj1); >test1(partialObj1, someObj1) : void > : ^^^^ ->test1 : (a: T, b: NoInfer & { prop?: unknown; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>test1 : (a: T, b: NoInfer & { prop?: unknown; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >partialObj1 : Partial<{ a: unknown; b: unknown; }> > : ^^^^^^^^^^^^^ ^^^^^ ^^^^ >someObj1 : { x: string; } > : ^^^^^ ^^^ declare function test2( ->test2 : (a: T1, b: T2, c: NoInfer & NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>test2 : (a: T1, b: T2, c: NoInfer & NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ a: T1, >a : T1 @@ -64,8 +64,8 @@ declare function test2( test2(partialObj1, partialObj2, someObj1); >test2(partialObj1, partialObj2, someObj1) : void > : ^^^^ ->test2 : (a: T1, b: T2, c: NoInfer & NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>test2 : (a: T1, b: T2, c: NoInfer & NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >partialObj1 : Partial<{ a: unknown; b: unknown; }> > : ^^^^^^^^^^^^^ ^^^^^ ^^^^ >partialObj2 : Partial<{ c: unknown; d: unknown; }> @@ -74,8 +74,8 @@ test2(partialObj1, partialObj2, someObj1); > : ^^^^^ ^^^ declare function test3( ->test3 : (a: T1, b: T2, c: NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>test3 : (a: T1, b: T2, c: NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ a: T1, >a : T1 @@ -94,8 +94,8 @@ declare function test3( test3(partialObj1, partialObj2, someObj1); >test3(partialObj1, partialObj2, someObj1) : void > : ^^^^ ->test3 : (a: T1, b: T2, c: NoInfer) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>test3 : (a: T1, b: T2, c: NoInfer) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >partialObj1 : Partial<{ a: unknown; b: unknown; }> > : ^^^^^^^^^^^^^ ^^^^^ ^^^^ >partialObj2 : Partial<{ c: unknown; d: unknown; }> diff --git a/tests/baselines/reference/noInferRedeclaration.js b/tests/baselines/reference/noInferRedeclaration.js index a9afd9107f829..3e96cfc4af392 100644 --- a/tests/baselines/reference/noInferRedeclaration.js +++ b/tests/baselines/reference/noInferRedeclaration.js @@ -19,6 +19,6 @@ export const g = f; //// [a.d.ts] -export declare const f: (x: T, y: NoInfer) => T; +export declare const f: (x: T, y: NoInfer) => T; //// [b.d.ts] -export declare const g: (x: T, y: globalThis.NoInfer) => T; +export declare const g: (x: T, y: globalThis.NoInfer) => T; diff --git a/tests/baselines/reference/noInferRedeclaration.types b/tests/baselines/reference/noInferRedeclaration.types index 7dd28f82de0b1..34731f9a803e1 100644 --- a/tests/baselines/reference/noInferRedeclaration.types +++ b/tests/baselines/reference/noInferRedeclaration.types @@ -2,10 +2,10 @@ === a.ts === export const f = (x: T, y: NoInfer) => x; ->f : (x: T, y: NoInfer) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ ->(x: T, y: NoInfer) => x : (x: T, y: NoInfer) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^^ +>f : (x: T, y: NoInfer) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ +>(x: T, y: NoInfer) => x : (x: T, y: NoInfer) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^ >x : T > : ^ >y : NoInfer @@ -15,16 +15,16 @@ export const f = (x: T, y: NoInfer) => x; === b.ts === import { f } from "./a"; ->f : (x: T, y: globalThis.NoInfer) => T -> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +>f : (x: T, y: globalThis.NoInfer) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ type NoInfer = T & number; >NoInfer : NoInfer > : ^^^^^^^^^^ export const g = f; ->g : (x: T, y: globalThis.NoInfer) => T -> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ ->f : (x: T, y: globalThis.NoInfer) => T -> : ^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +>g : (x: T, y: globalThis.NoInfer) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ +>f : (x: T, y: globalThis.NoInfer) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^ diff --git a/tests/baselines/reference/nonInferrableTypePropagation1.types b/tests/baselines/reference/nonInferrableTypePropagation1.types index 2c0f4ffbab25b..ddb060ea35002 100644 --- a/tests/baselines/reference/nonInferrableTypePropagation1.types +++ b/tests/baselines/reference/nonInferrableTypePropagation1.types @@ -16,8 +16,8 @@ type Thing = { > : ^ pipe( ->pipe : (opA: Op, opB: Op) => Thing -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (opA: Op, opB: Op) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ opA: Op, >opA : Op @@ -40,30 +40,30 @@ declare const thing: Thing; > : ^^^^^^^^^^^^^ declare function map(project: (value: T) => R): Op; ->map : (project: (value: T) => R) => Op -> : ^ ^^ ^^ ^^ ^^^^^ +>map : (project: (value: T) => R) => Op +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >project : (value: T) => R > : ^ ^^ ^^^^^ >value : T > : ^ declare function tap(next: (value: T) => void): Op; ->tap : (next: (value: T) => void) => Op -> : ^ ^^ ^^ ^^^^^ +>tap : (next: (value: T) => void) => Op +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >next : (value: T) => void > : ^ ^^ ^^^^^ >value : T > : ^ declare function box(data: V): Box; ->box : (data: V) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (data: V) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >data : V > : ^ declare function createAndUnbox(factory: () => Thing>): Thing; ->createAndUnbox : (factory: () => Thing>) => Thing -> : ^ ^^ ^^ ^^^^^ +>createAndUnbox : (factory: () => Thing>) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >factory : () => Thing> > : ^^^^^^ @@ -77,40 +77,40 @@ const result1 = createAndUnbox(() => thing.pipe( > : ^^^^^^^^^^^^^ >createAndUnbox(() => thing.pipe( map((data) => box(data)), tap((v) => log(v)),)) : Thing > : ^^^^^^^^^^^^^ ->createAndUnbox : (factory: () => Thing>) => Thing -> : ^ ^^ ^^ ^^^^^ +>createAndUnbox : (factory: () => Thing>) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => thing.pipe( map((data) => box(data)), tap((v) => log(v)),) : () => Thing> > : ^^^^^^^^^^^^^^^^^^^^^^^^ >thing.pipe( map((data) => box(data)), tap((v) => log(v)),) : Thing> > : ^^^^^^^^^^^^^^^^^^ ->thing.pipe : (opA: Op, opB: Op) => Thing -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>thing.pipe : (opA: Op, opB: Op) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >thing : Thing > : ^^^^^^^^^^^^^ ->pipe : (opA: Op, opB: Op) => Thing -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : (opA: Op, opB: Op) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ map((data) => box(data)), >map((data) => box(data)) : Op> > : ^^^^^^^^^^^^^^^^^^^^^^^ ->map : (project: (value: T) => R) => Op -> : ^ ^^ ^^ ^^ ^^^^^ +>map : (project: (value: T) => R) => Op +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(data) => box(data) : (data: number) => Box > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >data : number > : ^^^^^^ >box(data) : Box > : ^^^^^^^^^^^ ->box : (data: V) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (data: V) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >data : number > : ^^^^^^ tap((v) => log(v)), >tap((v) => log(v)) : Op, Box> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->tap : (next: (value: T) => void) => Op -> : ^ ^^ ^^ ^^^^^ +>tap : (next: (value: T) => void) => Op +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(v) => log(v) : (v: Box) => void > : ^ ^^^^^^^^^^^^^^^^^^^^^^ >v : Box @@ -129,24 +129,24 @@ const result2 = createAndUnbox(() => thing.pipe( > : ^^^^^^^^^^^^^ >createAndUnbox(() => thing.pipe( tap((v) => log(v)), map((data) => box(data)),)) : Thing > : ^^^^^^^^^^^^^ ->createAndUnbox : (factory: () => Thing>) => Thing -> : ^ ^^ ^^ ^^^^^ +>createAndUnbox : (factory: () => Thing>) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => thing.pipe( tap((v) => log(v)), map((data) => box(data)),) : () => Thing> > : ^^^^^^^^^^^^^^^^^^^^^^^^ >thing.pipe( tap((v) => log(v)), map((data) => box(data)),) : Thing> > : ^^^^^^^^^^^^^^^^^^ ->thing.pipe : (opA: Op, opB: Op) => Thing -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>thing.pipe : (opA: Op, opB: Op) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ >thing : Thing > : ^^^^^^^^^^^^^ ->pipe : (opA: Op, opB: Op) => Thing -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ +>pipe : (opA: Op, opB: Op) => Thing +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ tap((v) => log(v)), >tap((v) => log(v)) : Op > : ^^^^^^^^^^^^^^^^^^ ->tap : (next: (value: T) => void) => Op -> : ^ ^^ ^^ ^^^^^ +>tap : (next: (value: T) => void) => Op +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(v) => log(v) : (v: number) => void > : ^ ^^^^^^^^^^^^^^^^^ >v : number @@ -161,16 +161,16 @@ const result2 = createAndUnbox(() => thing.pipe( map((data) => box(data)), >map((data) => box(data)) : Op> > : ^^^^^^^^^^^^^^^^^^^^^^^ ->map : (project: (value: T) => R) => Op -> : ^ ^^ ^^ ^^ ^^^^^ +>map : (project: (value: T) => R) => Op +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(data) => box(data) : (data: number) => Box > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ >data : number > : ^^^^^^ >box(data) : Box > : ^^^^^^^^^^^ ->box : (data: V) => Box -> : ^ ^^ ^^ ^^^^^ +>box : (data: V) => Box +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >data : number > : ^^^^^^ diff --git a/tests/baselines/reference/nonInferrableTypePropagation2.types b/tests/baselines/reference/nonInferrableTypePropagation2.types index c938c94e70002..cb53129735d91 100644 --- a/tests/baselines/reference/nonInferrableTypePropagation2.types +++ b/tests/baselines/reference/nonInferrableTypePropagation2.types @@ -38,8 +38,8 @@ interface Refinement { } declare const filter: { ->filter : { (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (bs: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (as: ReadonlyArray) => ReadonlyArray; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>filter : { (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (bs: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (as: ReadonlyArray) => ReadonlyArray; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray >refinement : Refinement @@ -62,8 +62,8 @@ declare const filter: { }; declare function pipe(a: A, ab: (a: A) => B): B; ->pipe : (a: A, ab: (a: A) => B) => B -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (a: A, ab: (a: A) => B) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >ab : (a: A) => B @@ -72,8 +72,8 @@ declare function pipe(a: A, ab: (a: A) => B): B; > : ^ declare function exists(predicate: Predicate): (ma: Either) => boolean; ->exists : (predicate: Predicate) => (ma: Either) => boolean -> : ^ ^^ ^^ ^^^^^ +>exists : (predicate: Predicate) => (ma: Either) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >predicate : Predicate > : ^^^^^^^^^^^^ >ma : Either @@ -88,18 +88,18 @@ const x = pipe(es, filter(exists((n) => n > 0))) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe(es, filter(exists((n) => n > 0))) : readonly Either[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : (a: A, ab: (a: A) => B) => B -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (a: A, ab: (a: A) => B) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >es : Either[] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >filter(exists((n) => n > 0)) : (as: readonly Either[]) => readonly Either[] > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->filter : { (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (bs: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (as: ReadonlyArray) => ReadonlyArray; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ ->exists((n) => n > 0) : (ma: Either) => boolean -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ->exists : (predicate: Predicate) => (ma: Either) => boolean -> : ^ ^^ ^^ ^^^^^ +>filter : { (refinement: Refinement): (as: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (bs: ReadonlyArray) => ReadonlyArray; (predicate: Predicate): (as: ReadonlyArray) => ReadonlyArray; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ +>exists((n) => n > 0) : (ma: Either) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ +>exists : (predicate: Predicate) => (ma: Either) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(n) => n > 0 : (n: number) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^ >n : number diff --git a/tests/baselines/reference/nonInferrableTypePropagation3.types b/tests/baselines/reference/nonInferrableTypePropagation3.types index 7efbb45641053..963476448ffbf 100644 --- a/tests/baselines/reference/nonInferrableTypePropagation3.types +++ b/tests/baselines/reference/nonInferrableTypePropagation3.types @@ -12,20 +12,20 @@ declare type Callback = (...args: Args) => (data: Ou > : ^^^ declare function factory(): (callback: Callback) => (...args: Args) => R; ->factory : () => (callback: Callback) => (...args: Args) => R -> : ^ ^^^^^^^ +>factory : () => (callback: Callback) => (...args: Args) => R +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >callback : Callback > : ^^^^^^^^^^^^^^^^^^^^^^ >args : Args > : ^^^^ const make = factory<{id: string, age: number}[]>(); ->make : (callback: Callback) => (...args: Args) => R -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->factory<{id: string, age: number}[]>() : (callback: Callback) => (...args: Args) => R -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->factory : () => (callback: Callback) => (...args: Args) => R -> : ^ ^^^^^^^ +>make : (callback: Callback) => (...args: Args) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>factory<{id: string, age: number}[]>() : (callback: Callback) => (...args: Args) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>factory : () => (callback: Callback) => (...args: Args) => R +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >id : string > : ^^^^^^ >age : number @@ -36,8 +36,8 @@ const usersOverAge = make((age: number) => data => { > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ >make((age: number) => data => { return data.filter(user => user.age >= age);}) : (age: number) => { id: string; age: number; }[] > : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ ->make : (callback: Callback) => (...args: Args) => R -> : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>make : (callback: Callback) => (...args: Args) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ >(age: number) => data => { return data.filter(user => user.age >= age);} : (age: number) => (data: { id: string; age: number; }[]) => { id: string; age: number; }[] > : ^ ^^ ^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^ >age : number diff --git a/tests/baselines/reference/nonNullableReduction.types b/tests/baselines/reference/nonNullableReduction.types index 7828b314cdb17..c04612dbe1631 100644 --- a/tests/baselines/reference/nonNullableReduction.types +++ b/tests/baselines/reference/nonNullableReduction.types @@ -18,8 +18,8 @@ type Transform2 = string extends T ? ((value: string) => T) | undefined : (va > : ^^^^^^ function test(f1: Transform1, f2: Transform2) { ->test : (f1: Transform1, f2: Transform2) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>test : (f1: Transform1, f2: Transform2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >f1 : Transform1 > : ^^^^^^^^^^^^^ >f2 : Transform2 @@ -43,8 +43,8 @@ function test(f1: Transform1, f2: Transform2) { } function f1(x: T | (string extends T ? null | undefined : never)) { ->f1 : (x: T | (string extends T ? null | undefined : never)) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: T | (string extends T ? null | undefined : never)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T | (string extends T ? null | undefined : never) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -58,8 +58,8 @@ function f1(x: T | (string extends T ? null | undefined : never)) { } function f2(x: T | U) { ->f2 : (x: T | U) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ +>f2 : (x: T | U) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^ >x : T | U > : ^^^^^ diff --git a/tests/baselines/reference/nonNullableTypes1.types b/tests/baselines/reference/nonNullableTypes1.types index c52464c3014f8..9b429003daa29 100644 --- a/tests/baselines/reference/nonNullableTypes1.types +++ b/tests/baselines/reference/nonNullableTypes1.types @@ -2,8 +2,8 @@ === nonNullableTypes1.ts === function f1(x: T) { ->f1 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -30,8 +30,8 @@ function error(): never { } function f2(x: T) { // NonNullable ->f2 : (x: T) => NonNullable -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^ +>f2 : (x: T) => NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/nonPrimitiveAndTypeVariables.errors.txt b/tests/baselines/reference/nonPrimitiveAndTypeVariables.errors.txt index 2929c9cd00bfa..4b57f03f0c694 100644 --- a/tests/baselines/reference/nonPrimitiveAndTypeVariables.errors.txt +++ b/tests/baselines/reference/nonPrimitiveAndTypeVariables.errors.txt @@ -15,10 +15,8 @@ nonPrimitiveAndTypeVariables.ts(11,9): error TS2322: Type 'T' is not assignable let a: object = x; // Error ~ !!! error TS2322: Type 'T' is not assignable to type 'object'. -!!! related TS2208 nonPrimitiveAndTypeVariables.ts:9:14: This type parameter might need an `extends object` constraint. let b: U | object = x; // Error ~ !!! error TS2322: Type 'T' is not assignable to type 'object | U'. -!!! related TS2208 nonPrimitiveAndTypeVariables.ts:9:14: This type parameter might need an `extends object | U` constraint. } \ No newline at end of file diff --git a/tests/baselines/reference/nonPrimitiveAndTypeVariables.types b/tests/baselines/reference/nonPrimitiveAndTypeVariables.types index fd91a1ce8cf4b..2e2d156c919bd 100644 --- a/tests/baselines/reference/nonPrimitiveAndTypeVariables.types +++ b/tests/baselines/reference/nonPrimitiveAndTypeVariables.types @@ -36,8 +36,8 @@ let b: B<{ a: 0 | 1 }, 0> = { a: 0 }; > : ^ function foo(x: T) { ->foo : (x: T) => void -> : ^ ^^ ^^ ^^ ^^^^^^^^^ +>foo : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ diff --git a/tests/baselines/reference/objectLiteralNormalization.types b/tests/baselines/reference/objectLiteralNormalization.types index 5905535a8a209..05bcd64f1c8f3 100644 --- a/tests/baselines/reference/objectLiteralNormalization.types +++ b/tests/baselines/reference/objectLiteralNormalization.types @@ -463,8 +463,8 @@ d1.pos.b; > : ^^^^^^^^^^^^^^^^^^ declare function f(...items: T[]): T; ->f : (...items: T[]) => T -> : ^ ^^^^^ ^^ ^^^^^ +>f : (...items: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >items : T[] > : ^^^ @@ -486,8 +486,8 @@ let e1 = f({ a: 1, b: 2 }, { a: "abc" }, {}); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f({ a: 1, b: 2 }, { a: "abc" }, {}) : { a: number; b: number; } | { a: string; b?: undefined; } | { a?: undefined; b?: undefined; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (...items: T[]) => T -> : ^ ^^^^^ ^^ ^^^^^ +>f : (...items: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: 1, b: 2 } : { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -512,8 +512,8 @@ let e2 = f({}, { a: "abc" }, { a: 1, b: 2 }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f({}, { a: "abc" }, { a: 1, b: 2 }) : { a?: undefined; b?: undefined; } | { a: string; b?: undefined; } | { a: number; b: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (...items: T[]) => T -> : ^ ^^^^^ ^^ ^^^^^ +>f : (...items: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{} : {} > : ^^ >{ a: "abc" } : { a: string; } @@ -538,8 +538,8 @@ let e3 = f(data, { a: 2 }); > : ^^^^^ ^^^^^ ^^^^^ ^^^ >f(data, { a: 2 }) : { a: 1; b: "abc"; c: true; } > : ^^^^^ ^^^^^ ^^^^^ ^^^ ->f : (...items: T[]) => T -> : ^ ^^^^^ ^^ ^^^^^ +>f : (...items: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >data : { a: 1; b: "abc"; c: true; } > : ^^^^^ ^^^^^ ^^^^^ ^^^ >{ a: 2 } : { a: 2; } @@ -554,8 +554,8 @@ let e4 = f({ a: 2 }, data); > : ^^^^^ ^^^^^ ^^^^^ ^^^ >f({ a: 2 }, data) : { a: 1; b: "abc"; c: true; } > : ^^^^^ ^^^^^ ^^^^^ ^^^ ->f : (...items: T[]) => T -> : ^ ^^^^^ ^^ ^^^^^ +>f : (...items: T[]) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: 2 } : { a: 2; } > : ^^^^^^^^^ >a : 2 diff --git a/tests/baselines/reference/objectSpread.types b/tests/baselines/reference/objectSpread.types index 92ca81fce93ad..ed65ef54356ab 100644 --- a/tests/baselines/reference/objectSpread.types +++ b/tests/baselines/reference/objectSpread.types @@ -806,8 +806,8 @@ let spreadNonPrimitive = { ...{}}; // generic spreads function f(t: T, u: U) { ->f : (t: T, u: U) => T & U & { id: string; } -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (t: T, u: U) => T & U & { id: string; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : T > : ^ >u : U @@ -843,8 +843,8 @@ let exclusive: { id: string, a: number, b: string, c: string, d: boolean } = f({ a: 1, b: 'yes' }, { c: 'no', d: false }) >f({ a: 1, b: 'yes' }, { c: 'no', d: false }) : { a: number; b: string; } & { c: string; d: boolean; } & { id: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (t: T, u: U) => T & U & { id: string; } -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (t: T, u: U) => T & U & { id: string; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, b: 'yes' } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -879,8 +879,8 @@ let overlap: { id: string, a: number, b: string } = f({ a: 1 }, { a: 2, b: 'extra' }) >f({ a: 1 }, { a: 2, b: 'extra' }) : { a: number; } & { a: number; b: string; } & { id: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (t: T, u: U) => T & U & { id: string; } -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (t: T, u: U) => T & U & { id: string; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1 } : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -909,8 +909,8 @@ let overlapConflict: { id:string, a: string } = f({ a: 1 }, { a: 'mismatch' }) >f({ a: 1 }, { a: 'mismatch' }) : { a: number; } & { a: string; } & { id: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f : (t: T, u: U) => T & U & { id: string; } -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (t: T, u: U) => T & U & { id: string; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1 } : { a: number; } > : ^^^^^^^^^^^^^^ >a : number @@ -939,8 +939,8 @@ let overwriteId: { id: string, a: number, c: number, d: string } = f({ a: 1, id: true }, { c: 1, d: 'no' }) >f({ a: 1, id: true }, { c: 1, d: 'no' }) : never > : ^^^^^ ->f : (t: T, u: U) => T & U & { id: string; } -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (t: T, u: U) => T & U & { id: string; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, id: true } : { a: number; id: true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^ >a : number @@ -963,8 +963,8 @@ let overwriteId: { id: string, a: number, c: number, d: string } = > : ^^^^ function genericSpread(t: T, u: U, v: T | U, w: T | { s: string }, obj: { x: number }) { ->genericSpread : (t: T, u: U, v: T | U, w: T | { s: string; }, obj: { x: number; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>genericSpread : (t: T, u: U, v: T | U, w: T | { s: string; }, obj: { x: number; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U diff --git a/tests/baselines/reference/observableInferenceCanBeMade.types b/tests/baselines/reference/observableInferenceCanBeMade.types index 55cb97f5290fd..36e8dfb8b9623 100644 --- a/tests/baselines/reference/observableInferenceCanBeMade.types +++ b/tests/baselines/reference/observableInferenceCanBeMade.types @@ -4,8 +4,8 @@ // Repro from #33131 declare function of(a: T): Observable; ->of : (a: T) => Observable -> : ^ ^^ ^^ ^^^^^ +>of : (a: T) => Observable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T > : ^ @@ -75,8 +75,8 @@ function asObservable(input: string | ObservableInput): Observable : ^^^^^^^^ >of(input) : Observable > : ^^^^^^^^^^^^^^^^^^ ->of : (a: T) => Observable -> : ^ ^^ ^^ ^^^^^ +>of : (a: T) => Observable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >input : string > : ^^^^^^ >from(input) : Observable diff --git a/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types b/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types index 6a3e456f87062..5ed5488e5f431 100644 --- a/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types +++ b/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types @@ -70,8 +70,8 @@ let dict: { [key: string]: string } = optionalUndefined; // error > : ^^^^^^^ ^^^ function f() { ->f : () => void -> : ^ ^^^^^^^^^^^ +>f : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ let optional: { k1?: T } = undefined!; >optional : { k1?: T; } diff --git a/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types b/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types index 57159758c5900..3b5254da664ae 100644 --- a/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types +++ b/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types @@ -10,8 +10,8 @@ type Lower = { [K in keyof T]: T[K] }; > : ^^^^^^^^ export function appendToOptionalArray< ->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ K extends string | number | symbol, T @@ -86,8 +86,8 @@ const foo: {x?: number[]; y?: string[]; } = {}; appendToOptionalArray(foo, 'x', 123); // ok >appendToOptionalArray(foo, 'x', 123) : void > : ^^^^ ->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : { x?: number[]; y?: string[]; } > : ^^^^^^ ^^^^^^ ^^^ >'x' : "x" @@ -98,8 +98,8 @@ appendToOptionalArray(foo, 'x', 123); // ok appendToOptionalArray(foo, 'y', 'bar'); // ok >appendToOptionalArray(foo, 'y', 'bar') : void > : ^^^^ ->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : { x?: number[]; y?: string[]; } > : ^^^^^^ ^^^^^^ ^^^ >'y' : "y" @@ -110,8 +110,8 @@ appendToOptionalArray(foo, 'y', 'bar'); // ok appendToOptionalArray(foo, 'y', 12); // should fail >appendToOptionalArray(foo, 'y', 12) : void > : ^^^^ ->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : { x?: number[]; y?: string[]; } > : ^^^^^^ ^^^^^^ ^^^ >'y' : "y" @@ -122,8 +122,8 @@ appendToOptionalArray(foo, 'y', 12); // should fail appendToOptionalArray(foo, 'x', "no"); // should fail >appendToOptionalArray(foo, 'x', "no") : void > : ^^^^ ->appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >foo : { x?: number[]; y?: string[]; } > : ^^^^^^ ^^^^^^ ^^^ >'x' : "x" diff --git a/tests/baselines/reference/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.types b/tests/baselines/reference/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.types index c3cee6bbd921f..58a551e11bc38 100644 --- a/tests/baselines/reference/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.types +++ b/tests/baselines/reference/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.types @@ -1,8 +1,10 @@ //// [tests/cases/compiler/performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.ts] //// === Performance Stats === -Type Count: 5,000 -Instantiation count: 10,000 +Assignability cache: 10,000 +Type Count: 250,000 +Instantiation count: 1,000,000 +Symbol count: 250,000 === performanceComparisonOfStructurallyIdenticalInterfacesWithGenericSignatures.ts === export declare type ThenArg = T extends any ? any : T extends PromiseLike ? U : T; @@ -21,8 +23,8 @@ export interface InterfaceA { > : ^ map(callback: (value: T) => D): InterfaceA; ->map : (callback: (value: T) => D) => InterfaceA -> : ^ ^^ ^^ ^^^^^ +>map : (callback: (value: T) => D) => InterfaceA +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >callback : (value: T) => D > : ^ ^^ ^^^^^ >value : T @@ -75,8 +77,8 @@ export interface InterfaceA { export interface InterfaceB extends InterfaceA { map(callback: (value: T) => D): InterfaceB; ->map : (callback: (value: T) => D) => InterfaceB -> : ^ ^^ ^^ ^^^^^ +>map : (callback: (value: T) => D) => InterfaceB +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >callback : (value: T) => D > : ^ ^^ ^^^^^ >value : T @@ -148,8 +150,8 @@ export class A implements InterfaceB { } public map(callback: (value: T) => D): B { ->map : (callback: (value: T) => D) => B -> : ^ ^^ ^^ ^^^^^ +>map : (callback: (value: T) => D) => B +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >callback : (value: T) => D > : ^ ^^ ^^^^^ >value : T diff --git a/tests/baselines/reference/promiseTypeStrictNull.types b/tests/baselines/reference/promiseTypeStrictNull.types index 7ff8d96c59faa..3d41d182160ec 100644 --- a/tests/baselines/reference/promiseTypeStrictNull.types +++ b/tests/baselines/reference/promiseTypeStrictNull.types @@ -144,12 +144,12 @@ async function F() { return Promise.reject(Error()); >Promise.reject(Error()) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Error() : Error > : ^^^^^ >Error : ErrorConstructor @@ -232,12 +232,12 @@ async function I() { return Promise.reject(Error()); >Promise.reject(Error()) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Error() : Error > : ^^^^^ >Error : ErrorConstructor @@ -252,36 +252,36 @@ const p00 = p.catch(); > : ^^^^^^^^^^^^^^^^ >p.catch() : Promise > : ^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const p01 = p.then(); >p01 : Promise > : ^^^^^^^^^^^^^^^^ >p.then() : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const p10 = p.catch(undefined); >p10 : Promise > : ^^^^^^^^^^^^^^^^ >p.catch(undefined) : Promise > : ^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -290,24 +290,24 @@ const p11 = p.catch(null); > : ^^^^^^^^^^^^^^^^ >p.catch(null) : Promise > : ^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const p12 = p.catch(() => 1); >p12 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.catch(() => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -318,12 +318,12 @@ const p13 = p.catch(() => x); > : ^^^^^^^^^^^^ >p.catch(() => x) : Promise > : ^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -333,12 +333,12 @@ const p14 = p.catch(() => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.catch(() => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -349,12 +349,12 @@ const p15 = p.catch(() => null); > : ^^^^^^^^^^^^^^^^^^^^^^^ >p.catch(() => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ @@ -363,12 +363,12 @@ const p16 = p.catch(() => {}); > : ^^^^^^^^^^^^^^^^^^^^^^^ >p.catch(() => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -377,12 +377,12 @@ const p17 = p.catch(() => {throw 1}); > : ^^^^^^^^^^^^^^^^ >p.catch(() => {throw 1}) : Promise > : ^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -393,22 +393,22 @@ const p18 = p.catch(() => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^ >p.catch(() => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -417,22 +417,22 @@ const p19 = p.catch(() => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.catch(() => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>catch : (onrejected?: ((reason: any) => TResult | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -441,12 +441,12 @@ const p20 = p.then(undefined); > : ^^^^^^^^^^^^^^^^ >p.then(undefined) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -455,24 +455,24 @@ const p21 = p.then(null); > : ^^^^^^^^^^^^^^^^ >p.then(null) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const p22 = p.then(() => 1); >p22 : Promise > : ^^^^^^^^^^^^^^^ >p.then(() => 1) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -483,12 +483,12 @@ const p23 = p.then(() => x); > : ^^^^^^^^^^^^ >p.then(() => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -498,12 +498,12 @@ const p24 = p.then(() => undefined); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -514,12 +514,12 @@ const p25 = p.then(() => null); > : ^^^^^^^^^^^^^ >p.then(() => null) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ @@ -528,12 +528,12 @@ const p26 = p.then(() => {}); > : ^^^^^^^^^^^^^ >p.then(() => {}) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -542,12 +542,12 @@ const p27 = p.then(() => {throw 1}); > : ^^^^^^^^^^^^^^ >p.then(() => {throw 1}) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -558,22 +558,22 @@ const p28 = p.then(() => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -582,22 +582,22 @@ const p29 = p.then(() => Promise.reject(1)); > : ^^^^^^^^^^^^^^ >p.then(() => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -606,12 +606,12 @@ const p30 = p.then(undefined, undefined); > : ^^^^^^^^^^^^^^^^ >p.then(undefined, undefined) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >undefined : undefined @@ -622,12 +622,12 @@ const p31 = p.then(undefined, null); > : ^^^^^^^^^^^^^^^^ >p.then(undefined, null) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -636,12 +636,12 @@ const p32 = p.then(undefined, () => 1); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(undefined, () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => 1 : () => number @@ -654,12 +654,12 @@ const p33 = p.then(undefined, () => x); > : ^^^^^^^^^^^^ >p.then(undefined, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => x : () => any @@ -671,12 +671,12 @@ const p34 = p.then(undefined, () => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(undefined, () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => undefined : () => undefined @@ -689,12 +689,12 @@ const p35 = p.then(undefined, () => null); > : ^^^^^^^^^^^^^^^^^^^^^^^ >p.then(undefined, () => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => null : () => null @@ -705,12 +705,12 @@ const p36 = p.then(undefined, () => {}); > : ^^^^^^^^^^^^^^^^^^^^^^^ >p.then(undefined, () => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => {} : () => void @@ -721,12 +721,12 @@ const p37 = p.then(undefined, () => {throw 1}); > : ^^^^^^^^^^^^^^^^ >p.then(undefined, () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => {throw 1} : () => never @@ -739,24 +739,24 @@ const p38 = p.then(undefined, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(undefined, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -765,24 +765,24 @@ const p39 = p.then(undefined, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^ >p.then(undefined, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -791,12 +791,12 @@ const p40 = p.then(null, undefined); > : ^^^^^^^^^^^^^^^^ >p.then(null, undefined) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -805,24 +805,24 @@ const p41 = p.then(null, null); > : ^^^^^^^^^^^^^^^^ >p.then(null, null) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const p42 = p.then(null, () => 1); >p42 : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(null, () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => 1 : () => number > : ^^^^^^^^^^^^ >1 : 1 @@ -833,12 +833,12 @@ const p43 = p.then(null, () => x); > : ^^^^^^^^^^^^ >p.then(null, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -848,12 +848,12 @@ const p44 = p.then(null, () => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(null, () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -864,12 +864,12 @@ const p45 = p.then(null, () => null); > : ^^^^^^^^^^^^^^^^^^^^^^^ >p.then(null, () => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ @@ -878,12 +878,12 @@ const p46 = p.then(null, () => {}); > : ^^^^^^^^^^^^^^^^^^^^^^^ >p.then(null, () => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -892,12 +892,12 @@ const p47 = p.then(null, () => {throw 1}); > : ^^^^^^^^^^^^^^^^ >p.then(null, () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -908,22 +908,22 @@ const p48 = p.then(null, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(null, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -932,22 +932,22 @@ const p49 = p.then(null, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^ >p.then(null, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -956,12 +956,12 @@ const p50 = p.then(() => "1", undefined); > : ^^^^^^^^^^^^^^^ >p.then(() => "1", undefined) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -974,12 +974,12 @@ const p51 = p.then(() => "1", null); > : ^^^^^^^^^^^^^^^ >p.then(() => "1", null) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -990,12 +990,12 @@ const p52 = p.then(() => "1", () => 1); > : ^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => "1", () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1010,12 +1010,12 @@ const p53 = p.then(() => "1", () => x); > : ^^^^^^^^^^^^ >p.then(() => "1", () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1029,12 +1029,12 @@ const p54 = p.then(() => "1", () => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => "1", () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1049,12 +1049,12 @@ const p55 = p.then(() => "1", () => null); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => "1", () => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1067,12 +1067,12 @@ const p56 = p.then(() => "1", () => {}); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => "1", () => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1085,12 +1085,12 @@ const p57 = p.then(() => "1", () => {throw 1}); > : ^^^^^^^^^^^^^^^ >p.then(() => "1", () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1105,12 +1105,12 @@ const p58 = p.then(() => "1", () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => "1", () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1119,12 +1119,12 @@ const p58 = p.then(() => "1", () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -1133,12 +1133,12 @@ const p59 = p.then(() => "1", () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^ >p.then(() => "1", () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => "1" : () => string > : ^^^^^^^^^^^^ >"1" : "1" @@ -1147,12 +1147,12 @@ const p59 = p.then(() => "1", () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -1161,12 +1161,12 @@ const p60 = p.then(() => x, undefined); > : ^^^^^^^^^^^^ >p.then(() => x, undefined) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1178,12 +1178,12 @@ const p61 = p.then(() => x, null); > : ^^^^^^^^^^^^ >p.then(() => x, null) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1193,12 +1193,12 @@ const p62 = p.then(() => x, () => 1); > : ^^^^^^^^^^^^ >p.then(() => x, () => 1) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1212,12 +1212,12 @@ const p63 = p.then(() => x, () => x); > : ^^^^^^^^^^^^ >p.then(() => x, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1230,12 +1230,12 @@ const p64 = p.then(() => x, () => undefined); > : ^^^^^^^^^^^^ >p.then(() => x, () => undefined) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1249,12 +1249,12 @@ const p65 = p.then(() => x, () => null); > : ^^^^^^^^^^^^ >p.then(() => x, () => null) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1266,12 +1266,12 @@ const p66 = p.then(() => x, () => {}); > : ^^^^^^^^^^^^ >p.then(() => x, () => {}) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1283,12 +1283,12 @@ const p67 = p.then(() => x, () => {throw 1}); > : ^^^^^^^^^^^^ >p.then(() => x, () => {throw 1}) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1302,12 +1302,12 @@ const p68 = p.then(() => x, () => Promise.resolve(1)); > : ^^^^^^^^^^^^ >p.then(() => x, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1315,12 +1315,12 @@ const p68 = p.then(() => x, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -1329,12 +1329,12 @@ const p69 = p.then(() => x, () => Promise.reject(1)); > : ^^^^^^^^^^^^ >p.then(() => x, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => x : () => any > : ^^^^^^^^^ >x : any @@ -1342,12 +1342,12 @@ const p69 = p.then(() => x, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -1356,12 +1356,12 @@ const p70 = p.then(() => undefined, undefined); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1374,12 +1374,12 @@ const p71 = p.then(() => undefined, null); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, null) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1390,12 +1390,12 @@ const p72 = p.then(() => undefined, () => 1); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1410,12 +1410,12 @@ const p73 = p.then(() => undefined, () => x); > : ^^^^^^^^^^^^ >p.then(() => undefined, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1429,12 +1429,12 @@ const p74 = p.then(() => undefined, () => undefined); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1449,12 +1449,12 @@ const p75 = p.then(() => undefined, () => null); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1467,12 +1467,12 @@ const p76 = p.then(() => undefined, () => {}); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1485,12 +1485,12 @@ const p77 = p.then(() => undefined, () => {throw 1}); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1505,12 +1505,12 @@ const p78 = p.then(() => undefined, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1519,12 +1519,12 @@ const p78 = p.then(() => undefined, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -1533,12 +1533,12 @@ const p79 = p.then(() => undefined, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => undefined, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => undefined : () => undefined > : ^^^^^^^^^^^^^^^ >undefined : undefined @@ -1547,12 +1547,12 @@ const p79 = p.then(() => undefined, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -1561,12 +1561,12 @@ const p80 = p.then(() => null, undefined); > : ^^^^^^^^^^^^^ >p.then(() => null, undefined) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >undefined : undefined @@ -1577,12 +1577,12 @@ const p81 = p.then(() => null, null); > : ^^^^^^^^^^^^^ >p.then(() => null, null) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ @@ -1591,12 +1591,12 @@ const p82 = p.then(() => null, () => 1); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => null, () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => 1 : () => number @@ -1609,12 +1609,12 @@ const p83 = p.then(() => null, () => x); > : ^^^^^^^^^^^^ >p.then(() => null, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => x : () => any @@ -1626,12 +1626,12 @@ const p84 = p.then(() => null, () => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => null, () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => undefined : () => undefined @@ -1644,12 +1644,12 @@ const p85 = p.then(() => null, () => null); > : ^^^^^^^^^^^^^ >p.then(() => null, () => null) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => null : () => null @@ -1660,12 +1660,12 @@ const p86 = p.then(() => null, () => {}); > : ^^^^^^^^^^^^^^^^^^^^ >p.then(() => null, () => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => {} : () => void @@ -1676,12 +1676,12 @@ const p87 = p.then(() => null, () => {throw 1}); > : ^^^^^^^^^^^^^ >p.then(() => null, () => {throw 1}) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => {throw 1} : () => never @@ -1694,24 +1694,24 @@ const p88 = p.then(() => null, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => null, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -1720,24 +1720,24 @@ const p89 = p.then(() => null, () => Promise.reject(1)); > : ^^^^^^^^^^^^^ >p.then(() => null, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => null : () => null > : ^^^^^^^^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -1746,12 +1746,12 @@ const p90 = p.then(() => {}, undefined); > : ^^^^^^^^^^^^^ >p.then(() => {}, undefined) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >undefined : undefined @@ -1762,12 +1762,12 @@ const p91 = p.then(() => {}, null); > : ^^^^^^^^^^^^^ >p.then(() => {}, null) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ @@ -1776,12 +1776,12 @@ const p92 = p.then(() => {}, () => 1); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => {}, () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => 1 : () => number @@ -1794,12 +1794,12 @@ const p93 = p.then(() => {}, () => x); > : ^^^^^^^^^^^^ >p.then(() => {}, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => x : () => any @@ -1811,12 +1811,12 @@ const p94 = p.then(() => {}, () => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => {}, () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => undefined : () => undefined @@ -1829,12 +1829,12 @@ const p95 = p.then(() => {}, () => null); > : ^^^^^^^^^^^^^^^^^^^^ >p.then(() => {}, () => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => null : () => null @@ -1845,12 +1845,12 @@ const p96 = p.then(() => {}, () => {}); > : ^^^^^^^^^^^^^ >p.then(() => {}, () => {}) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => {} : () => void @@ -1861,12 +1861,12 @@ const p97 = p.then(() => {}, () => {throw 1}); > : ^^^^^^^^^^^^^ >p.then(() => {}, () => {throw 1}) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => {throw 1} : () => never @@ -1879,24 +1879,24 @@ const p98 = p.then(() => {}, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => {}, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -1905,24 +1905,24 @@ const p99 = p.then(() => {}, () => Promise.reject(1)); > : ^^^^^^^^^^^^^ >p.then(() => {}, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {} : () => void > : ^^^^^^^^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -1931,12 +1931,12 @@ const pa0 = p.then(() => {throw 1}, undefined); > : ^^^^^^^^^^^^^^ >p.then(() => {throw 1}, undefined) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -1949,12 +1949,12 @@ const pa1 = p.then(() => {throw 1}, null); > : ^^^^^^^^^^^^^^ >p.then(() => {throw 1}, null) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -1965,12 +1965,12 @@ const pa2 = p.then(() => {throw 1}, () => 1); > : ^^^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => 1) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -1985,12 +1985,12 @@ const pa3 = p.then(() => {throw 1}, () => x); > : ^^^^^^^^^^^^ >p.then(() => {throw 1}, () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2004,12 +2004,12 @@ const pa4 = p.then(() => {throw 1}, () => undefined); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2024,12 +2024,12 @@ const pa5 = p.then(() => {throw 1}, () => null); > : ^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => null) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2042,12 +2042,12 @@ const pa6 = p.then(() => {throw 1}, () => {}); > : ^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => {}) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2060,12 +2060,12 @@ const pa7 = p.then(() => {throw 1}, () => {throw 1}); > : ^^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2080,12 +2080,12 @@ const pa8 = p.then(() => {throw 1}, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2094,12 +2094,12 @@ const pa8 = p.then(() => {throw 1}, () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -2108,12 +2108,12 @@ const pa9 = p.then(() => {throw 1}, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^ >p.then(() => {throw 1}, () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => {throw 1} : () => never > : ^^^^^^^^^^^ >1 : 1 @@ -2122,12 +2122,12 @@ const pa9 = p.then(() => {throw 1}, () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -2136,22 +2136,22 @@ const pb0 = p.then(() => Promise.resolve("1"), undefined); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), undefined) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >undefined : undefined @@ -2162,22 +2162,22 @@ const pb1 = p.then(() => Promise.resolve("1"), null); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), null) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ @@ -2186,22 +2186,22 @@ const pb2 = p.then(() => Promise.resolve("1"), () => 1); > : ^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => 1) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => 1 : () => number @@ -2214,22 +2214,22 @@ const pb3 = p.then(() => Promise.resolve("1"), () => x); > : ^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => x : () => any @@ -2241,22 +2241,22 @@ const pb4 = p.then(() => Promise.resolve("1"), () => undefined); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => undefined : () => undefined @@ -2269,22 +2269,22 @@ const pb5 = p.then(() => Promise.resolve("1"), () => null); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => null) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => null : () => null @@ -2295,22 +2295,22 @@ const pb6 = p.then(() => Promise.resolve("1"), () => {}); > : ^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => {}) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => {} : () => void @@ -2321,22 +2321,22 @@ const pb7 = p.then(() => Promise.resolve("1"), () => {throw 1}); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => {throw 1} : () => never @@ -2349,34 +2349,34 @@ const pb8 = p.then(() => Promise.resolve("1"), () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -2385,34 +2385,34 @@ const pb9 = p.then(() => Promise.resolve("1"), () => Promise.reject(1)); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.resolve("1"), () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.resolve("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve("1") : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >"1" : "1" > : ^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ @@ -2421,22 +2421,22 @@ const pc0 = p.then(() => Promise.reject("1"), undefined); > : ^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), undefined) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >undefined : undefined @@ -2447,22 +2447,22 @@ const pc1 = p.then(() => Promise.reject("1"), null); > : ^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), null) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ @@ -2471,22 +2471,22 @@ const pc2 = p.then(() => Promise.reject("1"), () => 1); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => 1) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => 1 : () => number @@ -2499,22 +2499,22 @@ const pc3 = p.then(() => Promise.reject("1"), () => x); > : ^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => x) : Promise > : ^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => x : () => any @@ -2526,22 +2526,22 @@ const pc4 = p.then(() => Promise.reject("1"), () => undefined); > : ^^^^^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => undefined) : Promise > : ^^^^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => undefined : () => undefined @@ -2554,22 +2554,22 @@ const pc5 = p.then(() => Promise.reject("1"), () => null); > : ^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => null) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => null : () => null @@ -2580,22 +2580,22 @@ const pc6 = p.then(() => Promise.reject("1"), () => {}); > : ^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => {}) : Promise > : ^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => {} : () => void @@ -2606,22 +2606,22 @@ const pc7 = p.then(() => Promise.reject("1"), () => {throw 1}); > : ^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => {throw 1}) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => {throw 1} : () => never @@ -2634,34 +2634,34 @@ const pc8 = p.then(() => Promise.reject("1"), () => Promise.resolve(1)); > : ^^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => Promise.resolve(1)) : Promise > : ^^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => Promise.resolve(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^^ >Promise.resolve(1) : Promise > : ^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ @@ -2670,34 +2670,34 @@ const pc9 = p.then(() => Promise.reject("1"), () => Promise.reject(1)); > : ^^^^^^^^^^^^^^ >p.then(() => Promise.reject("1"), () => Promise.reject(1)) : Promise > : ^^^^^^^^^^^^^^ ->p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >() => Promise.reject("1") : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject("1") : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >"1" : "1" > : ^^^ >() => Promise.reject(1) : () => Promise > : ^^^^^^^^^^^^^^^^^^^^ >Promise.reject(1) : Promise > : ^^^^^^^^^^^^^^ ->Promise.reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>Promise.reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->reject : (reason?: any) => Promise -> : ^ ^^^^^^^^^^ ^^^ ^^^^^ +>reject : (reason?: any) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/propagateNonInferrableType.types b/tests/baselines/reference/propagateNonInferrableType.types index 2e4de770a0ac2..4207ca718237f 100644 --- a/tests/baselines/reference/propagateNonInferrableType.types +++ b/tests/baselines/reference/propagateNonInferrableType.types @@ -2,26 +2,26 @@ === propagateNonInferrableType.ts === declare function resolver(): () => void; ->resolver : () => () => void -> : ^ ^^^^^^^ +>resolver : () => () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ declare function wrapResolver(resolverFunction: () => void): void; ->wrapResolver : (resolverFunction: () => void) => void -> : ^ ^^ ^^ ^^^^^ +>wrapResolver : (resolverFunction: () => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >resolverFunction : () => void > : ^^^^^^ wrapResolver(resolver() || []); >wrapResolver(resolver() || []) : void > : ^^^^ ->wrapResolver : (resolverFunction: () => void) => void -> : ^ ^^ ^^ ^^^^^ +>wrapResolver : (resolverFunction: () => void) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >resolver() || [] : () => void > : ^^^^^^ >resolver() : () => void > : ^^^^^^ ->resolver : () => () => void -> : ^ ^^^^^^^ +>resolver : () => () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >[] : never[] > : ^^^^^^^ diff --git a/tests/baselines/reference/propertyAccessChain.types b/tests/baselines/reference/propertyAccessChain.types index 6b16547c73021..6068ed26da370 100644 --- a/tests/baselines/reference/propertyAccessChain.types +++ b/tests/baselines/reference/propertyAccessChain.types @@ -123,8 +123,8 @@ o5.b?.().c.d?.e; // GH#33744 declare const o6: () => undefined | ({ x: number }); ->o6 : () => undefined | ({ x: number; }) -> : ^ ^^^^^^^ +>o6 : () => undefined | ({ x: number; }) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ @@ -133,8 +133,8 @@ o6()?.x; > : ^^^^^^^^^^^^^^^^^^ >o6() : { x: number; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o6 : () => undefined | ({ x: number; }) -> : ^ ^^^^^^^ +>o6 : () => undefined | ({ x: number; }) +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/ramdaToolsNoInfinite2.types b/tests/baselines/reference/ramdaToolsNoInfinite2.types index e4734af9f8f8c..8611b6ee20c49 100644 --- a/tests/baselines/reference/ramdaToolsNoInfinite2.types +++ b/tests/baselines/reference/ramdaToolsNoInfinite2.types @@ -2,7 +2,7 @@ === Performance Stats === Assignability cache: 5,000 -Type Count: 10,000 +Type Count: 5,000 Instantiation count: 25,000 === ramdaToolsNoInfinite2.ts === diff --git a/tests/baselines/reference/reactHOCSpreadprops.types b/tests/baselines/reference/reactHOCSpreadprops.types index 8a50e112749d3..1e5044f08622e 100644 --- a/tests/baselines/reference/reactHOCSpreadprops.types +++ b/tests/baselines/reference/reactHOCSpreadprops.types @@ -13,8 +13,8 @@ import React = require("react"); > : ^^^^^^^^^^^^ function f

(App: React.ComponentClass

| React.StatelessComponent

): void { ->f :

(App: React.ComponentClass

| React.StatelessComponent

) => void -> : ^ ^^ ^^ ^^^^^ +>f :

(App: React.ComponentClass

| React.StatelessComponent

) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >App : React.ComponentClass | React.StatelessComponent

> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >React : any diff --git a/tests/baselines/reference/reactReadonlyHOCAssignabilityReal.types b/tests/baselines/reference/reactReadonlyHOCAssignabilityReal.types index 2da91a602779a..b9f0e99e020d0 100644 --- a/tests/baselines/reference/reactReadonlyHOCAssignabilityReal.types +++ b/tests/baselines/reference/reactReadonlyHOCAssignabilityReal.types @@ -13,8 +13,8 @@ import * as React from "react"; > : ^^^^^^^^^^^^ function myHigherOrderComponent

(Inner: React.ComponentClass

): React.ComponentClass

{ ->myHigherOrderComponent :

(Inner: React.ComponentClass

) => React.ComponentClass

-> : ^ ^^ ^^ ^^^^^ +>myHigherOrderComponent :

(Inner: React.ComponentClass

) => React.ComponentClass

+> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >Inner : React.ComponentClass

> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >React : any diff --git a/tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.types b/tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.types index 974be160ca61a..38071857041f3 100644 --- a/tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.types +++ b/tests/baselines/reference/reactReduxLikeDeferredInferenceAllowsAssignment.types @@ -175,8 +175,8 @@ type InferableComponentEnhancerWithProps = < >; declare const connect: { ->connect : (mapStateToProps: null | undefined, mapDispatchToProps: TDispatchProps) => InferableComponentEnhancerWithProps, TOwnProps> -> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>connect : (mapStateToProps: null | undefined, mapDispatchToProps: TDispatchProps) => InferableComponentEnhancerWithProps, TOwnProps> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ( mapStateToProps: null | undefined, @@ -353,8 +353,8 @@ const Test1 = connect( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >connect( null, mapDispatchToProps) : InferableComponentEnhancerWithProps<{ simpleAction: (payload: boolean) => { type: string; payload: boolean; }; thunkAction: (param1: number, param2: string) => Promise; }, {}> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->connect : (mapStateToProps: null | undefined, mapDispatchToProps: TDispatchProps) => InferableComponentEnhancerWithProps, TOwnProps> -> : ^ ^^^^^^^ ^^^^^^^ ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>connect : (mapStateToProps: null | undefined, mapDispatchToProps: TDispatchProps) => InferableComponentEnhancerWithProps, TOwnProps> +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ null, mapDispatchToProps diff --git a/tests/baselines/reference/recursiveClassBaseType.types b/tests/baselines/reference/recursiveClassBaseType.types index ed89ef813ceb4..c150e4483443c 100644 --- a/tests/baselines/reference/recursiveClassBaseType.types +++ b/tests/baselines/reference/recursiveClassBaseType.types @@ -4,14 +4,14 @@ // Repro from #44281 declare const p: (fn: () => T) => T; ->p : (fn: () => T) => T -> : ^ ^^ ^^ ^^^^^ +>p : (fn: () => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fn : () => T > : ^^^^^^ declare const Base: (val: T) => { new(): T }; ->Base : (val: T) => { new (): T; } -> : ^ ^^ ^^ ^^^^^ +>Base : (val: T) => { new (): T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >val : T > : ^ @@ -20,16 +20,16 @@ class C extends Base({ x: p(() => []) }) { } > : ^ >Base({ x: p(() => []) }) : { x: C[]; } > : ^^^^^^^^^^^ ->Base : (val: T) => { new (): T; } -> : ^ ^^ ^^ ^^^^^ +>Base : (val: T) => { new (): T; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ x: p(() => []) } : { x: C[]; } > : ^^^^^^^^^^^ >x : C[] > : ^^^ >p(() => []) : C[] > : ^^^ ->p : (fn: () => T) => T -> : ^ ^^ ^^ ^^^^^ +>p : (fn: () => T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => [] : () => never[] > : ^^^^^^^^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/recursiveConditionalTypes.errors.txt b/tests/baselines/reference/recursiveConditionalTypes.errors.txt index ed33be5060593..8d0f7736b0ce3 100644 --- a/tests/baselines/reference/recursiveConditionalTypes.errors.txt +++ b/tests/baselines/reference/recursiveConditionalTypes.errors.txt @@ -53,7 +53,6 @@ recursiveConditionalTypes.ts(169,5): error TS2322: Type 'number' is not assignab !!! error TS2322: Type '__Awaited' is not assignable to type '__Awaited'. !!! error TS2322: Type 'T' is not assignable to type 'U'. !!! error TS2322: 'U' could be instantiated with an arbitrary type which could be unrelated to 'T'. -!!! related TS2208 recursiveConditionalTypes.ts:18:14: This type parameter might need an `extends U` constraint. ta = tx; // Error ~~ !!! error TS2322: Type 'T' is not assignable to type '__Awaited'. diff --git a/tests/baselines/reference/recursiveConditionalTypes.types b/tests/baselines/reference/recursiveConditionalTypes.types index f09267bc93ba3..6f1abcfda29b1 100644 --- a/tests/baselines/reference/recursiveConditionalTypes.types +++ b/tests/baselines/reference/recursiveConditionalTypes.types @@ -21,8 +21,8 @@ type MyPromise = { > : ^^^^^^^^^^^^ then(f: ((value: T) => U | PromiseLike) | null | undefined): MyPromise; ->then : (f: ((value: T) => U | PromiseLike) | null | undefined) => MyPromise -> : ^ ^^ ^^ ^^^^^ +>then : (f: ((value: T) => U | PromiseLike) | null | undefined) => MyPromise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : ((value: T) => U | PromiseLike) | null | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^ >value : T @@ -46,8 +46,8 @@ type P2 = __Awaited>; // Error > : ^^^ function f11(tx: T, ta: __Awaited, ux: U, ua: __Awaited) { ->f11 : (tx: T, ta: __Awaited, ux: U, ua: __Awaited) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f11 : (tx: T, ta: __Awaited, ux: U, ua: __Awaited) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >tx : T > : ^ >ta : __Awaited @@ -180,16 +180,16 @@ function f22(tn: TupleOf, tm: TupleOf< } declare function f23(t: TupleOf): T; ->f23 : (t: TupleOf) => T -> : ^ ^^ ^^ ^^^^^ +>f23 : (t: TupleOf) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >t : [T, T, T] > : ^^^^^^^^^ f23(['a', 'b', 'c']); // string >f23(['a', 'b', 'c']) : string > : ^^^^^^ ->f23 : (t: TupleOf) => T -> : ^ ^^ ^^ ^^^^^ +>f23 : (t: TupleOf) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >['a', 'b', 'c'] : [string, string, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -214,8 +214,8 @@ type InfBox = Box>; > : ^^^^^^^^^ declare function unbox(box: RecBox): T ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >box : RecBox > : ^^^^^^^^^ @@ -270,32 +270,32 @@ declare let b4: { value: { value: { value: typeof b4 }}}; unbox(b1); // string >unbox(b1) : string > : ^^^^^^ ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b1 : Box>>>>> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unbox(b2); // string >unbox(b2) : string > : ^^^^^^ ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b2 : T6 > : ^^ unbox(b3); // InfBox >unbox(b3) : InfBox > : ^^^^^^^^^^^^^^ ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b3 : InfBox > : ^^^^^^^^^^^^^^ unbox({ value: { value: { value: { value: { value: { value: 5 }}}}}}); // number >unbox({ value: { value: { value: { value: { value: { value: 5 }}}}}}) : number > : ^^^^^^ ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ value: { value: { value: { value: { value: { value: 5 }}}}}} : { value: { value: { value: { value: { value: { value: number; }; }; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : { value: { value: { value: { value: { value: number; }; }; }; }; } @@ -326,16 +326,16 @@ unbox({ value: { value: { value: { value: { value: { value: 5 }}}}}}); // numbe unbox(b4); // { value: { value: typeof b4 }} >unbox(b4) : { value: { value: typeof b4; }; } > : ^^^^^^^^^ ^^^ ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b4 : { value: { value: { value: typeof b4; }; }; } > : ^^^^^^^^^ ^^^ unbox({ value: { value: { get value() { return this; } }}}); // { readonly value: ... } >unbox({ value: { value: { get value() { return this; } }}}) : { readonly value: { readonly value: any; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->unbox : (box: RecBox) => T -> : ^ ^^ ^^ ^^^^^ +>unbox : (box: RecBox) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ value: { value: { get value() { return this; } }}} : { value: { value: { readonly value: { readonly value: any; }; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : { value: { readonly value: { readonly value: any; }; }; } @@ -366,8 +366,8 @@ type Box2 = { value: T }; > : ^ declare function foo(x: Box1>): T; ->foo : (x: Box1>) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (x: Box1>) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Box1> > : ^^^^^^^^^^^^^ @@ -378,8 +378,8 @@ declare let z: Box2>; foo(z); // string >foo(z) : string > : ^^^^^^ ->foo : (x: Box1>) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (x: Box1>) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >z : Box2> > : ^^^^^^^^^^^^^^^^^^ @@ -404,8 +404,8 @@ type Unpack2 = T extends (infer U)[] ? Unpack2 : T; > : ^^^^^^^^^^ function f20(x: Unpack1, y: Unpack2) { ->f20 : (x: Unpack1, y: Unpack2) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f20 : (x: Unpack1, y: Unpack2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : Unpack1 > : ^^^^^^^^^^ >y : Unpack2 @@ -430,8 +430,8 @@ function f20(x: Unpack1, y: Unpack2) { f20(y, x); >f20(y, x) : void > : ^^^^ ->f20 : (x: Unpack1, y: Unpack2) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f20 : (x: Unpack1, y: Unpack2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >y : Unpack2 > : ^^^^^^^^^^ >x : Unpack1 diff --git a/tests/baselines/reference/recursiveReverseMappedType.types b/tests/baselines/reference/recursiveReverseMappedType.types index 4162e5a3d3203..54ee727667f49 100644 --- a/tests/baselines/reference/recursiveReverseMappedType.types +++ b/tests/baselines/reference/recursiveReverseMappedType.types @@ -11,8 +11,8 @@ type Recur = ( ) | ['marker', ...Recur[]]; function join(l: Recur[]): Recur { ->join : (l: Recur[]) => Recur -> : ^ ^^ ^^ ^^^^^ +>join : (l: Recur[]) => Recur +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >l : Recur[] > : ^^^^^^^^^^ @@ -28,8 +28,8 @@ function join(l: Recur[]): Recur { } function a(l: Recur[]): void { ->a : (l: Recur[]) => void -> : ^ ^^ ^^ ^^^^^ +>a : (l: Recur[]) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >l : Recur[] > : ^^^^^^^^^^ @@ -38,8 +38,8 @@ function a(l: Recur[]): void { > : ^^^^^^^^^^^^^^^^^^^^ >join(l) : Recur > : ^^^^^^^^ ->join : (l: Recur[]) => Recur -> : ^^^^^^ ^^ ^^^^^ +>join : (l: Recur[]) => Recur +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >l : Recur[] > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/recursiveTupleTypeInference.types b/tests/baselines/reference/recursiveTupleTypeInference.types index 1a8f4cc115153..69219af1199e5 100644 --- a/tests/baselines/reference/recursiveTupleTypeInference.types +++ b/tests/baselines/reference/recursiveTupleTypeInference.types @@ -41,8 +41,8 @@ const gK: { [key in keyof K]: A } = { b: ["number", "null"] }; > : ^^^^^^ function foo(g: G): T { ->foo : (g: G) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (g: G) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >g : G > : ^^^^ @@ -56,8 +56,8 @@ function foo(g: G): T { foo(gK); >foo(gK) : { b: unknown; } > : ^^^^^^^^^^^^^^^ ->foo : (g: G) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (g: G) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >gK : { b: A; } > : ^^^^^^^^^ diff --git a/tests/baselines/reference/recursiveTypeReferences1.types b/tests/baselines/reference/recursiveTypeReferences1.types index db0722b2e0c3e..74444523e1b27 100644 --- a/tests/baselines/reference/recursiveTypeReferences1.types +++ b/tests/baselines/reference/recursiveTypeReferences1.types @@ -295,28 +295,28 @@ type RecArray = Array>; > : ^^^^^^^^^^^ declare function flat(a: RecArray): Array; ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : RecArray > : ^^^^^^^^^^^ declare function flat1(a: Array>): Array ->flat1 : (a: Array>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat1 : (a: Array>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : (T | T[])[] > : ^^^^^^^^^^^ declare function flat2(a: Array>>): Array; ->flat2 : (a: Array>>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat2 : (a: Array>>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : (T | (T | T[])[])[] > : ^^^^^^^^^^^^^^^^^^^ flat([1, [2, [3]]]); // number[] >flat([1, [2, [3]]]) : number[] > : ^^^^^^^^ ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, [2, [3]]] : (number | (number | number[])[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -333,8 +333,8 @@ flat([1, [2, [3]]]); // number[] flat([[[0]]]); // number[] >flat([[[0]]]) : number[] > : ^^^^^^^^ ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[[0]]] : number[][][] > : ^^^^^^^^^^^^ >[[0]] : number[][] @@ -347,8 +347,8 @@ flat([[[0]]]); // number[] flat([[[[[[[[[[[4]]]]]]]]]]]); // number[] >flat([[[[[[[[[[[4]]]]]]]]]]]) : number[] > : ^^^^^^^^ ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[[[[[[[[[[4]]]]]]]]]]] : number[][][][][][][][][][][] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[[[[[[[[[[4]]]]]]]]]] : number[][][][][][][][][][] @@ -377,8 +377,8 @@ flat([[[[[[[[[[[4]]]]]]]]]]]); // number[] flat([1, 'a', [2]]); // (string | number)[] >flat([1, 'a', [2]]) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'a', [2]] : (string | number | number[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -393,8 +393,8 @@ flat([1, 'a', [2]]); // (string | number)[] flat([1, [2, 'a']]); // (string | number)[] >flat([1, [2, 'a']]) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, [2, 'a']] : (number | (string | number)[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -409,8 +409,8 @@ flat([1, [2, 'a']]); // (string | number)[] flat([1, ['a']]); // Error >flat([1, ['a']]) : string[] > : ^^^^^^^^ ->flat : (a: RecArray) => Array -> : ^ ^^ ^^ ^^^^^ +>flat : (a: RecArray) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, ['a']] : (number | string[])[] > : ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -423,8 +423,8 @@ flat([1, ['a']]); // Error flat1([1, [2, [3]]]); // (number | number[])[] >flat1([1, [2, [3]]]) : (number | number[])[] > : ^^^^^^^^^^^^^^^^^^^^^ ->flat1 : (a: Array>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat1 : (a: Array>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, [2, [3]]] : (number | (number | number[])[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -441,8 +441,8 @@ flat1([1, [2, [3]]]); // (number | number[])[] flat1([[[0]]]); // number[][] >flat1([[[0]]]) : number[][] > : ^^^^^^^^^^ ->flat1 : (a: Array>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat1 : (a: Array>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[[0]]] : number[][][] > : ^^^^^^^^^^^^ >[[0]] : number[][] @@ -455,8 +455,8 @@ flat1([[[0]]]); // number[][] flat1([1, 'a', [2]]); // (string | number)[] >flat1([1, 'a', [2]]) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->flat1 : (a: Array>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat1 : (a: Array>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'a', [2]] : (string | number | number[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -471,8 +471,8 @@ flat1([1, 'a', [2]]); // (string | number)[] flat1([1, [2, 'a']]); // (string | number)[] >flat1([1, [2, 'a']]) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->flat1 : (a: Array>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat1 : (a: Array>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, [2, 'a']] : (number | (string | number)[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -487,8 +487,8 @@ flat1([1, [2, 'a']]); // (string | number)[] flat1([1, ['a']]); // Error >flat1([1, ['a']]) : string[] > : ^^^^^^^^ ->flat1 : (a: Array>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat1 : (a: Array>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, ['a']] : (number | string[])[] > : ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -501,8 +501,8 @@ flat1([1, ['a']]); // Error flat2([1, [2, [3]]]); // number[] >flat2([1, [2, [3]]]) : number[] > : ^^^^^^^^ ->flat2 : (a: Array>>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat2 : (a: Array>>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, [2, [3]]] : (number | (number | number[])[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -519,8 +519,8 @@ flat2([1, [2, [3]]]); // number[] flat2([[[0]]]); // number[] >flat2([[[0]]]) : number[] > : ^^^^^^^^ ->flat2 : (a: Array>>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat2 : (a: Array>>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[[0]]] : number[][][] > : ^^^^^^^^^^^^ >[[0]] : number[][] @@ -533,8 +533,8 @@ flat2([[[0]]]); // number[] flat2([1, 'a', [2]]); // (string | number)[] >flat2([1, 'a', [2]]) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->flat2 : (a: Array>>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat2 : (a: Array>>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'a', [2]] : (string | number | number[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -549,8 +549,8 @@ flat2([1, 'a', [2]]); // (string | number)[] flat2([1, [2, 'a']]); // (string | number)[] >flat2([1, [2, 'a']]) : (string | number)[] > : ^^^^^^^^^^^^^^^^^^^ ->flat2 : (a: Array>>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat2 : (a: Array>>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, [2, 'a']] : (number | (string | number)[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -565,8 +565,8 @@ flat2([1, [2, 'a']]); // (string | number)[] flat2([1, ['a']]); // Error >flat2([1, ['a']]) : string[] > : ^^^^^^^^ ->flat2 : (a: Array>>) => Array -> : ^ ^^ ^^ ^^^^^ +>flat2 : (a: Array>>) => Array +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, ['a']] : (number | string[])[] > : ^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -611,8 +611,8 @@ type ValueOrArray2 = T | ValueOrArray2[]; > : ^^^^^^^^^^^^^^^^ declare function foo1(a: ValueOrArray1): T; ->foo1 : (a: ValueOrArray1) => T -> : ^ ^^ ^^ ^^^^^ +>foo1 : (a: ValueOrArray1) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : ValueOrArray1 > : ^^^^^^^^^^^^^^^^ @@ -625,8 +625,8 @@ let x1 = foo1(ra1); // Boom! > : ^^^^^^ >foo1(ra1) : string > : ^^^^^^ ->foo1 : (a: ValueOrArray1) => T -> : ^ ^^ ^^ ^^^^^ +>foo1 : (a: ValueOrArray1) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ra1 : ValueOrArray2 > : ^^^^^^^^^^^^^^^^^^^^^ @@ -639,8 +639,8 @@ type NumberOrArray2 = T | ValueOrArray2[]; > : ^^^^^^^^^^^^^^^^^ declare function foo2(a: ValueOrArray1): T; ->foo2 : (a: ValueOrArray1) => T -> : ^ ^^ ^^ ^^^^^ +>foo2 : (a: ValueOrArray1) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : ValueOrArray1 > : ^^^^^^^^^^^^^^^^ @@ -653,8 +653,8 @@ let x2 = foo2(ra2); // Boom! > : ^^^^^^ >foo2(ra2) : string > : ^^^^^^ ->foo2 : (a: ValueOrArray1) => T -> : ^ ^^ ^^ ^^^^^ +>foo2 : (a: ValueOrArray1) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ra2 : ValueOrArray2 > : ^^^^^^^^^^^^^^^^^^^^^ @@ -683,12 +683,12 @@ function parse(node: Tree, index: number[] = []): HTMLUListElement { > : ^^^^ >node.map(([el, children], i) => { const idx = [...index, i + 1]; return html('li', [ html('a', { href: `#${el.id}`, rel: 'noopener', 'data-index': idx.join('.') }, el.textContent!), children.length > 0 ? parse(children, idx) : frag() ]); }) : any[] > : ^^^^^ ->node.map : (callbackfn: (value: [HTMLHeadingElement, Tree], index: number, array: [HTMLHeadingElement, Tree][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>node.map : (callbackfn: (value: [HTMLHeadingElement, Tree], index: number, array: [HTMLHeadingElement, Tree][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >node : Tree > : ^^^^ ->map : (callbackfn: (value: [HTMLHeadingElement, Tree], index: number, array: [HTMLHeadingElement, Tree][]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: [HTMLHeadingElement, Tree], index: number, array: [HTMLHeadingElement, Tree][]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >([el, children], i) => { const idx = [...index, i + 1]; return html('li', [ html('a', { href: `#${el.id}`, rel: 'noopener', 'data-index': idx.join('.') }, el.textContent!), children.length > 0 ? parse(children, idx) : frag() ]); } : ([el, children]: [HTMLHeadingElement, Tree], i: number) => any > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ >el : HTMLHeadingElement @@ -807,18 +807,18 @@ function cons(hs: HTMLHeadingElement[]): Tree { return hs >hs .reduce((hss, h) => { const hs = hss.pop()!; return hs.length === 0 || level(h) > level(hs[0]) ? concat(hss, [concat(hs, [h])]) : concat(hss, [hs, [h]]); }, [[]]) .reduce((node, hs) => hs.length === 0 ? node : concat(node, [[hs.shift()!, cons(hs)]]) , []) : Tree > : ^^^^ ->hs .reduce((hss, h) => { const hs = hss.pop()!; return hs.length === 0 || level(h) > level(hs[0]) ? concat(hss, [concat(hs, [h])]) : concat(hss, [hs, [h]]); }, [[]]) .reduce : { (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[], initialValue: HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>hs .reduce((hss, h) => { const hs = hss.pop()!; return hs.length === 0 || level(h) > level(hs[0]) ? concat(hss, [concat(hs, [h])]) : concat(hss, [hs, [h]]); }, [[]]) .reduce : { (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[], initialValue: HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >hs .reduce((hss, h) => { const hs = hss.pop()!; return hs.length === 0 || level(h) > level(hs[0]) ? concat(hss, [concat(hs, [h])]) : concat(hss, [hs, [h]]); }, [[]]) : HTMLHeadingElement[][] > : ^^^^^^^^^^^^^^^^^^^^^^ ->hs .reduce : { (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement, initialValue: HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>hs .reduce : { (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement, initialValue: HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >hs : HTMLHeadingElement[] > : ^^^^^^^^^^^^^^^^^^^^ .reduce((hss, h) => { ->reduce : { (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement, initialValue: HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>reduce : { (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: HTMLHeadingElement, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => HTMLHeadingElement, initialValue: HTMLHeadingElement): HTMLHeadingElement; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement, currentIndex: number, array: HTMLHeadingElement[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(hss, h) => { const hs = hss.pop()!; return hs.length === 0 || level(h) > level(hs[0]) ? concat(hss, [concat(hs, [h])]) : concat(hss, [hs, [h]]); } : (hss: HTMLHeadingElement[][], h: HTMLHeadingElement) => any > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >hss : HTMLHeadingElement[][] @@ -917,8 +917,8 @@ function cons(hs: HTMLHeadingElement[]): Tree { > : ^^^^^^^ .reduce((node, hs) => ->reduce : { (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[], initialValue: HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>reduce : { (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: HTMLHeadingElement[], currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => HTMLHeadingElement[], initialValue: HTMLHeadingElement[]): HTMLHeadingElement[]; (callbackfn: (previousValue: U, currentValue: HTMLHeadingElement[], currentIndex: number, array: HTMLHeadingElement[][]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(node, hs) => hs.length === 0 ? node : concat(node, [[hs.shift()!, cons(hs)]]) : (node: Tree, hs: HTMLHeadingElement[]) => any > : ^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >node : Tree diff --git a/tests/baselines/reference/restParameterTypeInstantiation.types b/tests/baselines/reference/restParameterTypeInstantiation.types index c28614ecaa607..6c0e65fcd0c3f 100644 --- a/tests/baselines/reference/restParameterTypeInstantiation.types +++ b/tests/baselines/reference/restParameterTypeInstantiation.types @@ -14,10 +14,10 @@ interface TestGeneric { } const removeF = ({ f, ...rest }: TestGeneric) => { ->removeF : ({ f, ...rest }: TestGeneric) => { g: TX; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ ->({ f, ...rest }: TestGeneric) => { return rest} : ({ f, ...rest }: TestGeneric) => { g: TX; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ +>removeF : ({ f, ...rest }: TestGeneric) => { g: TX; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ +>({ f, ...rest }: TestGeneric) => { return rest} : ({ f, ...rest }: TestGeneric) => { g: TX; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >f : string > : ^^^^^^ >rest : { g: TX; } @@ -35,8 +35,8 @@ const result: number = removeF({ f: '', g: 3 }).g > : ^^^^^^ >removeF({ f: '', g: 3 }) : { g: number; } > : ^^^^^^^^^^^^^^ ->removeF : ({ f, ...rest }: TestGeneric) => { g: TX; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^ +>removeF : ({ f, ...rest }: TestGeneric) => { g: TX; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >{ f: '', g: 3 } : { f: string; g: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >f : string diff --git a/tests/baselines/reference/restTupleElements1.types b/tests/baselines/reference/restTupleElements1.types index ba97efd02665b..9f03dee6773a7 100644 --- a/tests/baselines/reference/restTupleElements1.types +++ b/tests/baselines/reference/restTupleElements1.types @@ -58,92 +58,92 @@ type L15 = T15["length"]; // number > : ^^^^^^ declare function assign(): void; ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign(); >assign() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign(); >assign() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[...number[]], number[]>(); >assign<[...number[]], number[]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], number[]>(); // Error >assign<[number, ...number[]], number[]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], []>(); // Error >assign<[number, ...number[]], []>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [number]>(); >assign<[number, ...number[]], [number]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [number, number]>(); >assign<[number, ...number[]], [number, number]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [number, number, ...number[]]>(); >assign<[number, ...number[]], [number, number, ...number[]]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number], [...number[]]>(); // Error >assign<[number], [...number[]]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number], [number, ...number[]]>(); // Error >assign<[number], [number, ...number[]]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [number, ...string[]]>(); // Error >assign<[number, ...number[]], [number, ...string[]]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [string, ...number[]]>(); // Error >assign<[number, ...number[]], [string, ...number[]]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [number, number, string]>(); // Error >assign<[number, ...number[]], [number, number, string]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ assign<[number, ...number[]], [number, number, number, string]>(); // Error >assign<[number, ...number[]], [number, number, number, string]>() : void > : ^^^^ ->assign : () => void -> : ^ ^^ ^^^^^^^^^ ^^^^^^^ +>assign : () => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ type T20 = [number, string, ...boolean[]]; >T20 : T20 @@ -240,24 +240,24 @@ let ex = t[x]; // number | string | boolean > : ^^^^^^ declare function f0(x: [T, ...U[]]): [T, U]; ->f0 : (x: [T, ...U[]]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>f0 : (x: [T, ...U[]]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : [T, ...U[]] > : ^^^^^^^^^^^ f0([]); // Error >f0([]) : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ ->f0 : (x: [T, ...U[]]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>f0 : (x: [T, ...U[]]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[] : [] > : ^^ f0([1]); >f0([1]) : [number, unknown] > : ^^^^^^^^^^^^^^^^^ ->f0 : (x: [T, ...U[]]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>f0 : (x: [T, ...U[]]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1] : [number] > : ^^^^^^^^ >1 : 1 @@ -266,8 +266,8 @@ f0([1]); f0([1, 2, 3]); >f0([1, 2, 3]) : [number, number] > : ^^^^^^^^^^^^^^^^ ->f0 : (x: [T, ...U[]]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>f0 : (x: [T, ...U[]]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 2, 3] : [number, number, number] > : ^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -280,8 +280,8 @@ f0([1, 2, 3]); f0([1, "hello", true]); >f0([1, "hello", true]) : [number, string | boolean] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f0 : (x: [T, ...U[]]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>f0 : (x: [T, ...U[]]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, "hello", true] : [number, string, true] > : ^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/restTuplesFromContextualTypes.types b/tests/baselines/reference/restTuplesFromContextualTypes.types index 7b98fc7b96cda..463b0bcb91dd1 100644 --- a/tests/baselines/reference/restTuplesFromContextualTypes.types +++ b/tests/baselines/reference/restTuplesFromContextualTypes.types @@ -617,8 +617,8 @@ function f4(t: T) { } declare function f5(f: (...args: T) => U): (...args: T) => U; ->f5 : (f: (...args: T) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f5 : (f: (...args: T) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (...args: T) => U > : ^^^^ ^^ ^^^^^ >args : T @@ -631,8 +631,8 @@ let g0 = f5(() => "hello"); > : ^^^^^^^^^^^^ >f5(() => "hello") : () => string > : ^^^^^^^^^^^^ ->f5 : (f: (...args: T) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f5 : (f: (...args: T) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >() => "hello" : () => string > : ^^^^^^^^^^^^ >"hello" : "hello" @@ -643,8 +643,8 @@ let g1 = f5((x, y) => 42); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5((x, y) => 42) : (x: any, y: any) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (f: (...args: T) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f5 : (f: (...args: T) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(x, y) => 42 : (x: any, y: any) => number > : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >x : any @@ -659,8 +659,8 @@ let g2 = f5((x: number, y) => 42); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5((x: number, y) => 42) : (x: number, y: any) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (f: (...args: T) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f5 : (f: (...args: T) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(x: number, y) => 42 : (x: number, y: any) => number > : ^ ^^ ^^ ^^^^^^^^^^^^^^^^ >x : number @@ -675,8 +675,8 @@ let g3 = f5((x: number, y: number) => x + y); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5((x: number, y: number) => x + y) : (x: number, y: number) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (f: (...args: T) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f5 : (f: (...args: T) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(x: number, y: number) => x + y : (x: number, y: number) => number > : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number @@ -695,8 +695,8 @@ let g4 = f5((...args) => true); > : ^^^^ ^^^^^^^^^^^^^^^^^^^ >f5((...args) => true) : (...args: any[]) => boolean > : ^^^^ ^^^^^^^^^^^^^^^^^^^ ->f5 : (f: (...args: T) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f5 : (f: (...args: T) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >(...args) => true : (...args: any[]) => boolean > : ^^^^ ^^^^^^^^^^^^^^^^^^^ >args : any[] @@ -705,8 +705,8 @@ let g4 = f5((...args) => true); > : ^^^^ declare function pipe(f: (...args: A) => B, g: (x: B) => C): (...args: A) => C; ->pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f : (...args: A) => B > : ^^^^ ^^ ^^^^^ >args : A @@ -723,8 +723,8 @@ let g5 = pipe(() => true, b => 42); > : ^^^^^^^^^^^^ >pipe(() => true, b => 42) : () => number > : ^^^^^^^^^^^^ ->pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >() => true : () => boolean > : ^^^^^^^^^^^^^ >true : true @@ -741,8 +741,8 @@ let g6 = pipe(x => "hello", s => s.length); > : ^^^^^^^^^^^^^^^^^^ >pipe(x => "hello", s => s.length) : (x: any) => number > : ^^^^^^^^^^^^^^^^^^ ->pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x => "hello" : (x: any) => string > : ^ ^^^^^^^^^^^^^^^^ >x : any @@ -765,8 +765,8 @@ let g7 = pipe((x, y) => 42, x => "" + x); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe((x, y) => 42, x => "" + x) : (x: any, y: any) => string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >(x, y) => 42 : (x: any, y: any) => number > : ^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >x : any @@ -791,8 +791,8 @@ let g8 = pipe((x: number, y: string) => 42, x => "" + x); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pipe((x: number, y: string) => 42, x => "" + x) : (x: number, y: string) => string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C -> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>pipe : (f: (...args: A) => B, g: (x: B) => C) => (...args: A) => C +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >(x: number, y: string) => 42 : (x: number, y: string) => number > : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >x : number diff --git a/tests/baselines/reference/returnTypePredicateIsInstantiateInContextOfTarget.types b/tests/baselines/reference/returnTypePredicateIsInstantiateInContextOfTarget.types index f2678d05d4294..e0a6c909a1524 100644 --- a/tests/baselines/reference/returnTypePredicateIsInstantiateInContextOfTarget.types +++ b/tests/baselines/reference/returnTypePredicateIsInstantiateInContextOfTarget.types @@ -21,31 +21,31 @@ class TestComponent extends React.Component<{ isAny: (obj: any) => obj is T } > : ^^^^^^^^^^^^ >Component : typeof React.Component > : ^^^^^^^^^^^^^^^^^^^^^^ ->isAny : (obj: any) => obj is T -> : ^ ^^ ^^ ^^^^^ +>isAny : (obj: any) => obj is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : any static defaultProps = { ->defaultProps : { isAny: (obj: any) => obj is T; } -> : ^^^^^^^^^^ ^^ ^^ ^^^^^ ^^^ ->{ isAny: TestComponent.isAny } : { isAny: (obj: any) => obj is T; } -> : ^^^^^^^^^^ ^^ ^^ ^^^^^ ^^^ +>defaultProps : { isAny: (obj: any) => obj is T; } +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ +>{ isAny: TestComponent.isAny } : { isAny: (obj: any) => obj is T; } +> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ isAny: TestComponent.isAny ->isAny : (obj: any) => obj is T -> : ^ ^^ ^^ ^^^^^ ->TestComponent.isAny : (obj: any) => obj is T -> : ^ ^^ ^^ ^^^^^ +>isAny : (obj: any) => obj is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>TestComponent.isAny : (obj: any) => obj is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >TestComponent : typeof TestComponent > : ^^^^^^^^^^^^^^^^^^^^ ->isAny : (obj: any) => obj is T -> : ^ ^^ ^^ ^^^^^ +>isAny : (obj: any) => obj is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ } // Type guard is defined as a static class property static isAny(obj: any): obj is T { ->isAny : (obj: any) => obj is T -> : ^ ^^ ^^ ^^^^^ +>isAny : (obj: any) => obj is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : any return true; diff --git a/tests/baselines/reference/reverseMappedContravariantInference.types b/tests/baselines/reference/reverseMappedContravariantInference.types index da070f1c6ca9c..b17dcaa277f3d 100644 --- a/tests/baselines/reference/reverseMappedContravariantInference.types +++ b/tests/baselines/reference/reverseMappedContravariantInference.types @@ -4,8 +4,8 @@ // Repro from #21273 declare function conforms(source: { [K in keyof T]: (val: T[K]) => boolean }): (value: T) => boolean; ->conforms : (source: { [K in keyof T]: (val: T[K]) => boolean; }) => (value: T) => boolean -> : ^ ^^ ^^ ^^^^^ +>conforms : (source: { [K in keyof T]: (val: T[K]) => boolean; }) => (value: T) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >source : { [K in keyof T]: (val: T[K]) => boolean; } > : ^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^ >val : T[K] @@ -18,8 +18,8 @@ conforms({ foo: (v: string) => false })({ foo: "hello" }); > : ^^^^^^^ >conforms({ foo: (v: string) => false }) : (value: { foo: string; }) => boolean > : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ->conforms : (source: { [K in keyof T]: (val: T[K]) => boolean; }) => (value: T) => boolean -> : ^ ^^ ^^ ^^^^^ +>conforms : (source: { [K in keyof T]: (val: T[K]) => boolean; }) => (value: T) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ foo: (v: string) => false } : { foo: (v: string) => false; } > : ^^^^^^^^ ^^ ^^^^^^^^^^^^^ >foo : (v: string) => false diff --git a/tests/baselines/reference/reverseMappedPartiallyInferableTypes.types b/tests/baselines/reference/reverseMappedPartiallyInferableTypes.types index 50e7502dd422c..e46751d78dd7c 100644 --- a/tests/baselines/reference/reverseMappedPartiallyInferableTypes.types +++ b/tests/baselines/reference/reverseMappedPartiallyInferableTypes.types @@ -60,8 +60,8 @@ export type PropsDefinition = RecordPropsDefinition; declare function extend({ props }: { props: PropsDefinition }): PropsDefinition; ->extend : ({ props }: { props: PropsDefinition; }) => PropsDefinition -> : ^ ^^ ^^ ^^^^^ +>extend : ({ props }: { props: PropsDefinition; }) => PropsDefinition +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >props : RecordPropsDefinition > : ^^^^^^^^^^^^^^^^^^^^^^^^ >props : RecordPropsDefinition @@ -78,8 +78,8 @@ const r = extend({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >extend({ props: { notResolved: { type: Object as PropType, validator: x => { return x.valid; } }, explicit: { type: Object as PropType, validator: (x: MyType) => { return x.valid; } } }}) : RecordPropsDefinition<{ notResolved: MyType; explicit: MyType; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->extend : ({ props }: { props: PropsDefinition; }) => PropsDefinition -> : ^ ^^ ^^ ^^^^^ +>extend : ({ props }: { props: PropsDefinition; }) => PropsDefinition +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ props: { notResolved: { type: Object as PropType, validator: x => { return x.valid; } }, explicit: { type: Object as PropType, validator: (x: MyType) => { return x.valid; } } }} : { props: { notResolved: { type: PropType; validator: (x: MyType) => boolean; }; explicit: { type: PropType; validator: (x: MyType) => boolean; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ @@ -220,8 +220,8 @@ type Mapped = { } declare function id(arg: Mapped): Mapped; ->id : (arg: Mapped) => Mapped -> : ^ ^^ ^^ ^^^^^ +>id : (arg: Mapped) => Mapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : Mapped > : ^^^^^^^^^ @@ -232,8 +232,8 @@ const obj1 = id({ > : ^^^^^^^^^^^^^^^^^^^^^^^^ >id({ foo: { contents: "" }}) : Mapped<{ foo: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->id : (arg: Mapped) => Mapped -> : ^ ^^ ^^ ^^^^^ +>id : (arg: Mapped) => Mapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ foo: { contents: "" }} : { foo: { contents: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -258,8 +258,8 @@ const obj2 = id({ > : ^^^^^^^^^^^^^^^^^^^^^^^^ >id({ foo: { contents: "", contains(k) { return k.length > 0; } }}) : Mapped<{ foo: string; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^ ->id : (arg: Mapped) => Mapped -> : ^ ^^ ^^ ^^^^^ +>id : (arg: Mapped) => Mapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ foo: { contents: "", contains(k) { return k.length > 0; } }} : { foo: { contents: string; contains(k: string): boolean; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -303,8 +303,8 @@ const obj3 = id({ > : ^^^^^^^^^^^^^^^ >id({ foo: { contains(k) { return k.length > 0; } }}) : Mapped > : ^^^^^^^^^^^^^^^ ->id : (arg: Mapped) => Mapped -> : ^ ^^ ^^ ^^^^^ +>id : (arg: Mapped) => Mapped +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ foo: { contains(k) { return k.length > 0; } }} : { foo: { contains(k: unknown): boolean; }; } > : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -348,16 +348,16 @@ type Mapped1 = { }; declare function inferMapped1(arg: Mapped1): void; ->inferMapped1 : (arg: Mapped1) => void -> : ^ ^^ ^^ ^^^^^ +>inferMapped1 : (arg: Mapped1) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : Mapped1 > : ^^^^^^^^^^ inferMapped1({ >inferMapped1({ key: [3, arg => arg.key > 5]}) : void > : ^^^^ ->inferMapped1 : (arg: Mapped1) => void -> : ^ ^^ ^^ ^^^^^ +>inferMapped1 : (arg: Mapped1) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ key: [3, arg => arg.key > 5]} : { key: [number, (arg: { key: number; }) => boolean]; } > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -396,16 +396,16 @@ type Mapped2 = { }; declare function inferMapped2(arg: Mapped2): void; ->inferMapped2 : (arg: Mapped2) => void -> : ^ ^^ ^^ ^^^^^ +>inferMapped2 : (arg: Mapped2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : Mapped2 > : ^^^^^^^^^^ inferMapped2({ >inferMapped2({ key: [3, arg => arg.key > 5]}) : void > : ^^^^ ->inferMapped2 : (arg: Mapped2) => void -> : ^ ^^ ^^ ^^^^^ +>inferMapped2 : (arg: Mapped2) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ key: [3, arg => arg.key > 5]} : { key: [number, (arg: { key: number; }) => boolean]; } > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -444,16 +444,16 @@ type MappedReadonly = { }; declare function inferMappedReadonly(arg: MappedReadonly): void; ->inferMappedReadonly : (arg: MappedReadonly) => void -> : ^ ^^ ^^ ^^^^^ +>inferMappedReadonly : (arg: MappedReadonly) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : MappedReadonly > : ^^^^^^^^^^^^^^^^^ inferMappedReadonly({ >inferMappedReadonly({ key: [3, arg => arg.key > 5]}) : void > : ^^^^ ->inferMappedReadonly : (arg: MappedReadonly) => void -> : ^ ^^ ^^ ^^^^^ +>inferMappedReadonly : (arg: MappedReadonly) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ key: [3, arg => arg.key > 5]} : { key: [number, (arg: { key: number; }) => boolean]; } > : ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/reverseMappedTupleContext.types b/tests/baselines/reference/reverseMappedTupleContext.types index 0bf6a06757e89..3b0c5056a7be6 100644 --- a/tests/baselines/reference/reverseMappedTupleContext.types +++ b/tests/baselines/reference/reverseMappedTupleContext.types @@ -4,8 +4,8 @@ // https://github.com/microsoft/TypeScript/issues/55382 declare function test1(arg: { ->test1 : (arg: { [K in keyof T]: T[K]; }) => T -> : ^ ^^ ^^ ^^^^^ +>test1 : (arg: { [K in keyof T]: T[K]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : { [K in keyof T]: T[K]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^ @@ -16,8 +16,8 @@ const result1 = test1(["foo", 42]); > : ^^^^^^^^^^^^^^^^ >test1(["foo", 42]) : [string, number] > : ^^^^^^^^^^^^^^^^ ->test1 : (arg: { [K in keyof T]: T[K]; }) => T -> : ^ ^^ ^^ ^^^^^ +>test1 : (arg: { [K in keyof T]: T[K]; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >["foo", 42] : [string, number] > : ^^^^^^^^^^^^^^^^ >"foo" : "foo" diff --git a/tests/baselines/reference/reverseMappedTypeInferenceSameSource1.types b/tests/baselines/reference/reverseMappedTypeInferenceSameSource1.types index 0b296fd881bd9..9abb4b6f7068c 100644 --- a/tests/baselines/reference/reverseMappedTypeInferenceSameSource1.types +++ b/tests/baselines/reference/reverseMappedTypeInferenceSameSource1.types @@ -43,8 +43,8 @@ interface ConfigureStoreOptions { } declare function configureStore( ->configureStore : (options: ConfigureStoreOptions) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>configureStore : (options: ConfigureStoreOptions) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ options: ConfigureStoreOptions, >options : ConfigureStoreOptions @@ -66,8 +66,8 @@ declare function configureStore( > : ^^^^ >configureStore({ reducer }) : void > : ^^^^ ->configureStore : (options: ConfigureStoreOptions) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>configureStore : (options: ConfigureStoreOptions) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ reducer } : { reducer: Reducer; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >reducer : Reducer @@ -87,8 +87,8 @@ const store2 = configureStore({ > : ^^^^ >configureStore({ reducer: { counter1: counterReducer1, },}) : void > : ^^^^ ->configureStore : (options: ConfigureStoreOptions) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>configureStore : (options: ConfigureStoreOptions) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ reducer: { counter1: counterReducer1, },} : { reducer: { counter1: Reducer; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/reverseMappedTypeIntersectionConstraint.types b/tests/baselines/reference/reverseMappedTypeIntersectionConstraint.types index 656259e8eb96b..c28a147ad344b 100644 --- a/tests/baselines/reference/reverseMappedTypeIntersectionConstraint.types +++ b/tests/baselines/reference/reverseMappedTypeIntersectionConstraint.types @@ -127,10 +127,10 @@ const inferredParams2 = createMachine({ // ----------------------------------------------------------------------------------------- const checkType = () => (value: { [K in keyof U & keyof T]: U[K] }) => value; ->checkType : () => (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->() => (value: { [K in keyof U & keyof T]: U[K] }) => value : () => (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>checkType : () => (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>() => (value: { [K in keyof U & keyof T]: U[K] }) => value : () => (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(value: { [K in keyof U & keyof T]: U[K] }) => value : (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : { [K in keyof U & keyof T]: U[K]; } @@ -145,8 +145,8 @@ const checked = checkType<{x: number, y: string}>()({ > : ^^^^^^^^^^^^^^^^^^^^^^ >checkType<{x: number, y: string}>() : (value: { [K in keyof U & ("x" | "y")]: U[K]; }) => { [K in keyof U & ("x" | "y")]: U[K]; } > : ^ ^^^^^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->checkType : () => (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>checkType : () => (value: { [K in keyof U & keyof T]: U[K]; }) => { [K in keyof U & keyof T]: U[K]; } +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : string diff --git a/tests/baselines/reference/reverseMappedTypeRecursiveInference.types b/tests/baselines/reference/reverseMappedTypeRecursiveInference.types index 5cdda57f52197..82c068ed1fd04 100644 --- a/tests/baselines/reference/reverseMappedTypeRecursiveInference.types +++ b/tests/baselines/reference/reverseMappedTypeRecursiveInference.types @@ -16,8 +16,8 @@ type Bar = { } function test(value: Foo): V { ->test : (value: Foo) => V -> : ^ ^^ ^^ ^^^^^ +>test : (value: Foo) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : Foo > : ^^^^^^ @@ -48,8 +48,8 @@ const bar: Bar = {}; test(bar); >test(bar) : { [x: string]: any; } > : ^^^^^^^^^^^^^^^^^^^^^ ->test : (value: Foo) => V -> : ^ ^^ ^^ ^^^^^ +>test : (value: Foo) => V +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >bar : Bar > : ^^^^^^^^ diff --git a/tests/baselines/reference/reverseMappedUnionInference.types b/tests/baselines/reference/reverseMappedUnionInference.types index 5ae0c20275612..b5d72f7b0eefa 100644 --- a/tests/baselines/reference/reverseMappedUnionInference.types +++ b/tests/baselines/reference/reverseMappedUnionInference.types @@ -28,8 +28,8 @@ interface Extractor { } declare function createExtractor(params: { ->createExtractor : (params: { matcher: (node: unknown) => node is T; extract: (node: T) => Result; }) => Extractor -> : ^ ^^ ^^ ^^ ^^^^^ +>createExtractor : (params: { matcher: (node: unknown) => node is T; extract: (node: T) => Result; }) => Extractor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >params : { matcher: (node: unknown) => node is T; extract: (node: T) => Result; } > : ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ @@ -68,8 +68,8 @@ const identifierExtractor = createExtractor({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >createExtractor({ matcher: isIdentifier, extract: (node) => { return { node, kind: "identifier" as const, value: node.name, }; },}) : Extractor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createExtractor : (params: { matcher: (node: unknown) => node is T; extract: (node: T) => Result; }) => Extractor -> : ^ ^^ ^^ ^^ ^^^^^ +>createExtractor : (params: { matcher: (node: unknown) => node is T; extract: (node: T) => Result; }) => Extractor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ matcher: isIdentifier, extract: (node) => { return { node, kind: "identifier" as const, value: node.name, }; },} : { matcher: (node: unknown) => node is Identifier; extract: (node: Identifier) => { node: Identifier; kind: "identifier"; value: string; }; } > : ^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -138,8 +138,8 @@ const stringExtractor = createExtractor({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >createExtractor({ matcher: isStringLiteral, extract: (node) => { return { node, kind: "string" as const, value: node.value, }; },}) : Extractor > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createExtractor : (params: { matcher: (node: unknown) => node is T; extract: (node: T) => Result; }) => Extractor -> : ^ ^^ ^^ ^^ ^^^^^ +>createExtractor : (params: { matcher: (node: unknown) => node is T; extract: (node: T) => Result; }) => Extractor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ matcher: isStringLiteral, extract: (node) => { return { node, kind: "string" as const, value: node.value, }; },} : { matcher: (node: unknown) => node is StringLiteral; extract: (node: StringLiteral) => { node: StringLiteral; kind: "string"; value: string; }; } > : ^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/selfReferentialFunctionType.types b/tests/baselines/reference/selfReferentialFunctionType.types index e69caaf61733f..57d9e871be7c1 100644 --- a/tests/baselines/reference/selfReferentialFunctionType.types +++ b/tests/baselines/reference/selfReferentialFunctionType.types @@ -2,24 +2,24 @@ === selfReferentialFunctionType.ts === declare function f(args: typeof f): T; ->f : (args: typeof f) => T -> : ^ ^^ ^^ ^^^^^ +>f : (args: typeof f) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : typeof f > : ->f : (args: typeof f) => T -> : ^ ^^ ^^ ^^^^^ +>f : (args: typeof f) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ declare function g(args: T): T; ->g : (args: T) => T -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^ ->g : (args: T) => T -> : ^ ^^^^^^^^^^^^^ ^^ ^^^^^ +>g : (args: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>g : (args: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : T > : ^ declare function h(): typeof h; ->h : () => typeof h -> : ^ ^^^^^^^ ->h : () => typeof h -> : ^ ^^^^^^^ +>h : () => typeof h +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>h : () => typeof h +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/silentNeverPropagation.types b/tests/baselines/reference/silentNeverPropagation.types index 933843c9f53ec..40643c44210a0 100644 --- a/tests/baselines/reference/silentNeverPropagation.types +++ b/tests/baselines/reference/silentNeverPropagation.types @@ -34,16 +34,16 @@ type MoreState = { }; declare function createModule(state: TState, actions: TActions): ModuleWithState & TActions; ->createModule : (state: TState, actions: TActions) => ModuleWithState & TActions -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>createModule : (state: TState, actions: TActions) => ModuleWithState & TActions +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >state : TState > : ^^^^^^ >actions : TActions > : ^^^^^^^^ declare function convert(m: ModuleWithState & TActions): ModuleWithState & TActions; ->convert : (m: ModuleWithState & TActions) => ModuleWithState & TActions -> : ^ ^^ ^^ ^^ ^^^^^ +>convert : (m: ModuleWithState & TActions) => ModuleWithState & TActions +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >m : ModuleWithState & TActions > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -52,14 +52,14 @@ const breaks = convert( > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >convert( createModule({ a: 12 }, { foo() { return true } })) : ModuleWithState<{ a: number; } & MoreState> & ModuleWithState<{ a: number; }> & { foo(): true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->convert : (m: ModuleWithState & TActions) => ModuleWithState & TActions -> : ^ ^^ ^^ ^^ ^^^^^ +>convert : (m: ModuleWithState & TActions) => ModuleWithState & TActions +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ createModule({ a: 12 }, { foo() { return true } }) >createModule({ a: 12 }, { foo() { return true } }) : ModuleWithState<{ a: number; }> & { foo(): true; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->createModule : (state: TState, actions: TActions) => ModuleWithState & TActions -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>createModule : (state: TState, actions: TActions) => ModuleWithState & TActions +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >{ a: 12 } : { a: number; } > : ^^^^^^^^^^^^^^ >a : number diff --git a/tests/baselines/reference/simplifyingConditionalWithInteriorConditionalIsRelated.types b/tests/baselines/reference/simplifyingConditionalWithInteriorConditionalIsRelated.types index 3cd86e888d921..68d03de6d6532 100644 --- a/tests/baselines/reference/simplifyingConditionalWithInteriorConditionalIsRelated.types +++ b/tests/baselines/reference/simplifyingConditionalWithInteriorConditionalIsRelated.types @@ -7,8 +7,8 @@ type ConditionalType = T extends string ? string : number; > : ^^^^^^^^^^^^^^^^^^ function ConditionalOrUndefined(): ConditionalType | undefined { ->ConditionalOrUndefined : () => ConditionalType | undefined -> : ^ ^^^^^^^ +>ConditionalOrUndefined : () => ConditionalType | undefined +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ return 0 as any; >0 as any : any @@ -17,23 +17,23 @@ function ConditionalOrUndefined(): ConditionalType | undefined { } function JustConditional(): ConditionalType { ->JustConditional : () => ConditionalType -> : ^ ^^^^^^^ +>JustConditional : () => ConditionalType +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ return ConditionalOrUndefined()!; // shouldn't error >ConditionalOrUndefined()! : ConditionalType > : ^^^^^^^^^^^^^^^^^^ >ConditionalOrUndefined() : ConditionalType | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->ConditionalOrUndefined : () => ConditionalType | undefined -> : ^^^^^^^^^^^ +>ConditionalOrUndefined : () => ConditionalType | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ } // For comparison... function genericOrUndefined(): T | undefined { ->genericOrUndefined : () => T | undefined -> : ^ ^^^^^^^ +>genericOrUndefined : () => T | undefined +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ return 0 as any; >0 as any : any @@ -42,23 +42,23 @@ function genericOrUndefined(): T | undefined { } function JustGeneric(): T { ->JustGeneric : () => T -> : ^ ^^^^^^^ +>JustGeneric : () => T +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ return genericOrUndefined()!; // no error >genericOrUndefined()! : NonNullable > : ^^^^^^^^^^^^^^ >genericOrUndefined() : T | undefined > : ^^^^^^^^^^^^^ ->genericOrUndefined : () => T_1 | undefined -> : ^^^^^^^^^^^ +>genericOrUndefined : () => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ } // Simplified example: function f() { ->f : () => void -> : ^ ^^^^^^^^^^^ +>f : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ type One = T extends string ? string : string; >One : T extends string ? string : string diff --git a/tests/baselines/reference/spreadNonObject1.types b/tests/baselines/reference/spreadNonObject1.types index 9b3bb1b1f7dbe..56a7c0b9911e2 100644 --- a/tests/baselines/reference/spreadNonObject1.types +++ b/tests/baselines/reference/spreadNonObject1.types @@ -18,8 +18,8 @@ const b = { > : ^^^^^^ >(["4"] as S[]).map(function (s) { const a = { ...s, y: 6 }; }) : void[] > : ^^^^^^ ->(["4"] as S[]).map : (callbackfn: (value: `${number}`, index: number, array: `${number}`[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>(["4"] as S[]).map : (callbackfn: (value: `${number}`, index: number, array: `${number}`[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(["4"] as S[]) : `${number}`[] > : ^^^^^^^^^^^^^ >["4"] as S[] : `${number}`[] @@ -28,8 +28,8 @@ const b = { > : ^^^^^ >"4" : "4" > : ^^^ ->map : (callbackfn: (value: `${number}`, index: number, array: `${number}`[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: `${number}`, index: number, array: `${number}`[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >function (s) { const a = { ...s, y: 6 }; } : (s: `${number}`) => void > : ^ ^^^^^^^^^^^^^^^^^^^^^^ >s : `${number}` diff --git a/tests/baselines/reference/spreadObjectOrFalsy.types b/tests/baselines/reference/spreadObjectOrFalsy.types index a33ded1d33fb3..426abd73ff062 100644 --- a/tests/baselines/reference/spreadObjectOrFalsy.types +++ b/tests/baselines/reference/spreadObjectOrFalsy.types @@ -2,8 +2,8 @@ === spreadObjectOrFalsy.ts === function f1(a: T & undefined) { ->f1 : (a: T & undefined) => any -> : ^ ^^ ^^ ^^^^^^^^ +>f1 : (a: T & undefined) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^ >a : T & undefined > : ^^^^^^^^^^^^^ @@ -15,8 +15,8 @@ function f1(a: T & undefined) { } function f2(a: T | T & undefined) { ->f2 : (a: T | (T & undefined)) => T | (T & undefined) -> : ^ ^^ ^^ ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>f2 : (a: T | (T & undefined)) => T | (T & undefined) +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : T | (T & undefined) > : ^^^^^^^^^^^^^^^^^^^ @@ -54,8 +54,8 @@ function f4(a: object | T) { } function f5(a: S | T) { ->f5 : (a: S | T) => S | T -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^ +>f5 : (a: S | T) => S | T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^ >a : S | T > : ^^^^^ diff --git a/tests/baselines/reference/spreadsAndContextualTupleTypes.types b/tests/baselines/reference/spreadsAndContextualTupleTypes.types index a7e2d9aec9a77..ff9112b72ca72 100644 --- a/tests/baselines/reference/spreadsAndContextualTupleTypes.types +++ b/tests/baselines/reference/spreadsAndContextualTupleTypes.types @@ -164,8 +164,8 @@ const randomID = 'id' as string; > : ^^^^ declare function foo(path: T): T; ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >path : T > : ^ @@ -174,8 +174,8 @@ const a1 = foo([...staticPath1Level, randomID, 'doc.pdf']); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath1Level, randomID, 'doc.pdf']) : readonly ["home", string, "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath1Level, randomID, 'doc.pdf'] : ["home", string, "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath1Level : "home" @@ -192,8 +192,8 @@ const a2 = foo([...staticPath2Level, randomID, 'doc.pdf']); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath2Level, randomID, 'doc.pdf']) : readonly ["home", "user", string, "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath2Level, randomID, 'doc.pdf'] : ["home", "user", string, "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath2Level : "home" | "user" @@ -210,8 +210,8 @@ const a3 = foo([...staticPath3Level, randomID, 'doc.pdf']); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath3Level, randomID, 'doc.pdf']) : readonly ["home", "user", "downloads", string, "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath3Level, randomID, 'doc.pdf'] : ["home", "user", "downloads", string, "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath3Level : "home" | "user" | "downloads" @@ -228,8 +228,8 @@ const b1 = foo([...staticPath1Level, randomID, 'folder', 'doc.pdf']); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath1Level, randomID, 'folder', 'doc.pdf']) : readonly ["home", string, "folder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath1Level, randomID, 'folder', 'doc.pdf'] : ["home", string, "folder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath1Level : "home" @@ -248,8 +248,8 @@ const b2 = foo([...staticPath2Level, randomID, 'folder', 'doc.pdf']); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath2Level, randomID, 'folder', 'doc.pdf']) : readonly ["home", "user", string, "folder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath2Level, randomID, 'folder', 'doc.pdf'] : ["home", "user", string, "folder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath2Level : "home" | "user" @@ -268,8 +268,8 @@ const b3 = foo([...staticPath3Level, randomID, 'folder', 'doc.pdf']); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath3Level, randomID, 'folder', 'doc.pdf']) : readonly ["home", "user", "downloads", string, "folder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath3Level, randomID, 'folder', 'doc.pdf'] : ["home", "user", "downloads", string, "folder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath3Level : "home" | "user" | "downloads" @@ -288,8 +288,8 @@ const c1 = foo([...staticPath1Level, randomID, 'folder', 'subfolder', 'doc.pdf'] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath1Level, randomID, 'folder', 'subfolder', 'doc.pdf']) : readonly ["home", string, "folder", "subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath1Level, randomID, 'folder', 'subfolder', 'doc.pdf'] : ["home", string, "folder", "subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath1Level : "home" @@ -310,8 +310,8 @@ const c2 = foo([...staticPath2Level, randomID, 'folder', 'subfolder', 'doc.pdf'] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath2Level, randomID, 'folder', 'subfolder', 'doc.pdf']) : readonly ["home", "user", string, "folder", "subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath2Level, randomID, 'folder', 'subfolder', 'doc.pdf'] : ["home", "user", string, "folder", "subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath2Level : "home" | "user" @@ -332,8 +332,8 @@ const c3 = foo([...staticPath3Level, randomID, 'folder', 'subfolder', 'doc.pdf'] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath3Level, randomID, 'folder', 'subfolder', 'doc.pdf']) : readonly ["home", "user", "downloads", string, "folder", "subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath3Level, randomID, 'folder', 'subfolder', 'doc.pdf'] : ["home", "user", "downloads", string, "folder", "subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath3Level : "home" | "user" | "downloads" @@ -354,8 +354,8 @@ const d1 = foo([...staticPath1Level, randomID, 'folder', 'subfolder', 'another-s > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath1Level, randomID, 'folder', 'subfolder', 'another-subfolder', 'doc.pdf']) : readonly ["home", string, "folder", "subfolder", "another-subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath1Level, randomID, 'folder', 'subfolder', 'another-subfolder', 'doc.pdf'] : ["home", string, "folder", "subfolder", "another-subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath1Level : "home" @@ -378,8 +378,8 @@ const d2 = foo([...staticPath2Level, randomID, 'folder', 'subfolder', 'another-s > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath2Level, randomID, 'folder', 'subfolder', 'another-subfolder', 'doc.pdf']) : readonly ["home", "user", string, "folder", "subfolder", "another-subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath2Level, randomID, 'folder', 'subfolder', 'another-subfolder', 'doc.pdf'] : ["home", "user", string, "folder", "subfolder", "another-subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath2Level : "home" | "user" @@ -402,8 +402,8 @@ const d3 = foo([...staticPath3Level, randomID, 'folder', 'subfolder', 'another-s > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo([...staticPath3Level, randomID, 'folder', 'subfolder', 'another-subfolder', 'doc.pdf']) : readonly ["home", "user", "downloads", string, "folder", "subfolder", "another-subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (path: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>foo : (path: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[...staticPath3Level, randomID, 'folder', 'subfolder', 'another-subfolder', 'doc.pdf'] : ["home", "user", "downloads", string, "folder", "subfolder", "another-subfolder", "doc.pdf"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >...staticPath3Level : "home" | "user" | "downloads" diff --git a/tests/baselines/reference/strictBindCallApply1.types b/tests/baselines/reference/strictBindCallApply1.types index ff2f612e1cad6..187b324f0a714 100644 --- a/tests/baselines/reference/strictBindCallApply1.types +++ b/tests/baselines/reference/strictBindCallApply1.types @@ -22,8 +22,8 @@ declare function overloaded(n: number): string; > : ^^^^^^ declare function generic(x: T): T; ->generic : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>generic : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -32,12 +32,12 @@ let f00 = foo.bind(undefined); > : ^ ^^ ^^ ^^ ^^^^^ >foo.bind(undefined) : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ @@ -46,12 +46,12 @@ let f01 = foo.bind(undefined, 10); > : ^^^^^^^^^^^^^^^^^^^^^ >foo.bind(undefined, 10) : (b: string) => string > : ^^^^^^^^^^^^^^^^^^^^^ ->foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -62,12 +62,12 @@ let f02 = foo.bind(undefined, 10, "hello"); > : ^^^^^^^^^^^^ >foo.bind(undefined, 10, "hello") : () => string > : ^^^^^^^^^^^^ ->foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -80,12 +80,12 @@ let f03 = foo.bind(undefined, 10, 20); // Error > : ^^^^^^^^^^^^ >foo.bind(undefined, 10, 20) : () => string > : ^^^^^^^^^^^^ ->foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -98,26 +98,26 @@ let f04 = overloaded.bind(undefined); // typeof overloaded > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >overloaded.bind(undefined) : { (s: string): number; (n: number): string; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->overloaded.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>overloaded.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >overloaded : { (s: string): number; (n: number): string; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ let f05 = generic.bind(undefined); // typeof generic ->f05 : (x: T) => T -> : ^ ^^ ^^ ^^^^^ ->generic.bind(undefined) : (x: T) => T -> : ^ ^^ ^^ ^^^^^ ->generic.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ ->generic : (x: T) => T -> : ^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>f05 : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>generic.bind(undefined) : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>generic.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>generic : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ @@ -126,12 +126,12 @@ let c00 = foo.call(undefined, 10, "hello"); > : ^^^^^^ >foo.call(undefined, 10, "hello") : string > : ^^^^^^ ->foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -144,12 +144,12 @@ let c01 = foo.call(undefined, 10); // Error > : ^^^^^^ >foo.call(undefined, 10) : string > : ^^^^^^ ->foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -160,12 +160,12 @@ let c02 = foo.call(undefined, 10, 20); // Error > : ^^^^^^ >foo.call(undefined, 10, 20) : string > : ^^^^^^ ->foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -178,12 +178,12 @@ let c03 = foo.call(undefined, 10, "hello", 30); // Error > : ^^^^^^ >foo.call(undefined, 10, "hello", 30) : string > : ^^^^^^ ->foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -198,12 +198,12 @@ let a00 = foo.apply(undefined, [10, "hello"]); > : ^^^^^^ >foo.apply(undefined, [10, "hello"]) : string > : ^^^^^^ ->foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >[10, "hello"] : [number, string] @@ -218,12 +218,12 @@ let a01 = foo.apply(undefined, [10]); // Error > : ^^^^^^ >foo.apply(undefined, [10]) : string > : ^^^^^^ ->foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >[10] : [number] @@ -236,12 +236,12 @@ let a02 = foo.apply(undefined, [10, 20]); // Error > : ^^^^^^ >foo.apply(undefined, [10, 20]) : string > : ^^^^^^ ->foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >[10, 20] : [number, number] @@ -256,12 +256,12 @@ let a03 = foo.apply(undefined, [10, "hello", 30]); // Error > : ^^^^^^ >foo.apply(undefined, [10, "hello", 30]) : string > : ^^^^^^ ->foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >foo : (a: number, b: string) => string > : ^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >[10, "hello", 30] : [number, string, number] @@ -318,8 +318,8 @@ class C { > : ^^^^^^^^^ generic(x: T): T { return x } ->generic : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>generic : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ >x : T @@ -339,16 +339,16 @@ let f10 = c.foo.bind(c); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c.foo.bind(c) : (a: number, b: string) => string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c : C > : ^ @@ -357,16 +357,16 @@ let f11 = c.foo.bind(c, 10); > : ^^^^^^^^^^^^^^^^^^^^^ >c.foo.bind(c, 10) : (b: string) => string > : ^^^^^^^^^^^^^^^^^^^^^ ->c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c : C > : ^ >10 : 10 @@ -377,16 +377,16 @@ let f12 = c.foo.bind(c, 10, "hello"); > : ^^^^^^^^^^^^ >c.foo.bind(c, 10, "hello") : () => string > : ^^^^^^^^^^^^ ->c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c : C > : ^ >10 : 10 @@ -399,16 +399,16 @@ let f13 = c.foo.bind(c, 10, 20); // Error > : ^^^^^^^^^^^^ >c.foo.bind(c, 10, 20) : () => string > : ^^^^^^^^^^^^ ->c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c : C > : ^ >10 : 10 @@ -421,16 +421,16 @@ let f14 = c.foo.bind(undefined); // Error > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c.foo.bind(undefined) : (a: number, b: string) => string > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.foo.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ @@ -439,34 +439,34 @@ let f15 = c.overloaded.bind(c); // typeof C.prototype.overloaded > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >c.overloaded.bind(c) : { (s: string): number; (n: number): string; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->c.overloaded.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.overloaded.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c.overloaded : { (s: string): number; (n: number): string; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >c : C > : ^ >overloaded : { (s: string): number; (n: number): string; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c : C > : ^ let f16 = c.generic.bind(c); // typeof C.prototype.generic ->f16 : (x: T) => T -> : ^ ^^ ^^ ^^^^^ ->c.generic.bind(c) : (x: T) => T -> : ^ ^^ ^^ ^^^^^ ->c.generic.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ ->c.generic : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>f16 : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>c.generic.bind(c) : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>c.generic.bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>c.generic : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >c : C > : ^ ->generic : (x: T) => T -> : ^ ^^ ^^ ^^^^^ ->bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>generic : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>bind : { (this: T, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >c : C > : ^ @@ -475,16 +475,16 @@ let c10 = c.foo.call(c, 10, "hello"); > : ^^^^^^ >c.foo.call(c, 10, "hello") : string > : ^^^^^^ ->c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -497,16 +497,16 @@ let c11 = c.foo.call(c, 10); // Error > : ^^^^^^ >c.foo.call(c, 10) : string > : ^^^^^^ ->c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -517,16 +517,16 @@ let c12 = c.foo.call(c, 10, 20); // Error > : ^^^^^^ >c.foo.call(c, 10, 20) : string > : ^^^^^^ ->c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -539,16 +539,16 @@ let c13 = c.foo.call(c, 10, "hello", 30); // Error > : ^^^^^^ >c.foo.call(c, 10, "hello", 30) : string > : ^^^^^^ ->c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -563,16 +563,16 @@ let c14 = c.foo.call(undefined, 10, "hello"); // Error > : ^^^^^^ >c.foo.call(undefined, 10, "hello") : string > : ^^^^^^ ->c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>c.foo.call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: (this: T, ...args: A) => R, thisArg: T, ...args: A) => R +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -585,16 +585,16 @@ let a10 = c.foo.apply(c, [10, "hello"]); > : ^^^^^^ >c.foo.apply(c, [10, "hello"]) : string > : ^^^^^^ ->c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10, "hello"] : [number, string] @@ -609,16 +609,16 @@ let a11 = c.foo.apply(c, [10]); // Error > : ^^^^^^ >c.foo.apply(c, [10]) : string > : ^^^^^^ ->c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10] : [number] @@ -631,16 +631,16 @@ let a12 = c.foo.apply(c, [10, 20]); // Error > : ^^^^^^ >c.foo.apply(c, [10, 20]) : string > : ^^^^^^ ->c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10, 20] : [number, number] @@ -655,16 +655,16 @@ let a13 = c.foo.apply(c, [10, "hello", 30]); // Error > : ^^^^^^ >c.foo.apply(c, [10, "hello", 30]) : string > : ^^^^^^ ->c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10, "hello", 30] : [number, string, number] @@ -681,16 +681,16 @@ let a14 = c.foo.apply(undefined, [10, "hello"]); // Error > : ^^^^^^ >c.foo.apply(undefined, [10, "hello"]) : string > : ^^^^^^ ->c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>c.foo.apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c.foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ >c : C > : ^ >foo : (this: C, a: number, b: string) => string > : ^ ^^^^^ ^^ ^^ ^^ ^^^^^ ->apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: (this: T) => R, thisArg: T): R; (this: (this: T, ...args: A) => R, thisArg: T, args: A): R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >[10, "hello"] : [number, string] @@ -705,12 +705,12 @@ let f20 = C.bind(undefined); > : ^^^^^^^^ >C.bind(undefined) : typeof C > : ^^^^^^^^ ->C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ @@ -719,12 +719,12 @@ let f21 = C.bind(undefined, 10); > : ^^^^^^^^^^^^^^^^^^^^ >C.bind(undefined, 10) : new (b: string) => C > : ^^^^^^^^^^^^^^^^^^^^ ->C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -735,12 +735,12 @@ let f22 = C.bind(undefined, 10, "hello"); > : ^^^^^^^^^^^ >C.bind(undefined, 10, "hello") : new () => C > : ^^^^^^^^^^^ ->C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -753,12 +753,12 @@ let f23 = C.bind(undefined, 10, 20); // Error > : ^^^^^^^^^^^ >C.bind(undefined, 10, 20) : new () => C > : ^^^^^^^^^^^ ->C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>C.bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T, thisArg: any): T; (this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >undefined : undefined > : ^^^^^^^^^ >10 : 10 @@ -769,12 +769,12 @@ let f23 = C.bind(undefined, 10, 20); // Error C.call(c, 10, "hello"); >C.call(c, 10, "hello") : void > : ^^^^ ->C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >C : typeof C > : ^^^^^^^^ ->call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -785,12 +785,12 @@ C.call(c, 10, "hello"); C.call(c, 10); // Error >C.call(c, 10) : void > : ^^^^ ->C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >C : typeof C > : ^^^^^^^^ ->call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -799,12 +799,12 @@ C.call(c, 10); // Error C.call(c, 10, 20); // Error >C.call(c, 10, 20) : void > : ^^^^ ->C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >C : typeof C > : ^^^^^^^^ ->call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -815,12 +815,12 @@ C.call(c, 10, 20); // Error C.call(c, 10, "hello", 30); // Error >C.call(c, 10, "hello", 30) : void > : ^^^^ ->C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>C.call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >C : typeof C > : ^^^^^^^^ ->call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (this: new (...args: A) => T, thisArg: T, ...args: A) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ >c : C > : ^ >10 : 10 @@ -833,12 +833,12 @@ C.call(c, 10, "hello", 30); // Error C.apply(c, [10, "hello"]); >C.apply(c, [10, "hello"]) : void > : ^^^^ ->C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10, "hello"] : [number, string] @@ -851,12 +851,12 @@ C.apply(c, [10, "hello"]); C.apply(c, [10]); // Error >C.apply(c, [10]) : void > : ^^^^ ->C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10] : [number] @@ -867,12 +867,12 @@ C.apply(c, [10]); // Error C.apply(c, [10, 20]); // Error >C.apply(c, [10, 20]) : void > : ^^^^ ->C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10, 20] : [number, number] @@ -885,12 +885,12 @@ C.apply(c, [10, 20]); // Error C.apply(c, [10, "hello", 30]); // Error >C.apply(c, [10, "hello", 30]) : void > : ^^^^ ->C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>C.apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >C : typeof C > : ^^^^^^^^ ->apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } -> : ^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ +>apply : { (this: new () => T, thisArg: T): void; (this: new (...args: A) => T, thisArg: T, args: A): void; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ >c : C > : ^ >[10, "hello", 30] : [number, string, number] @@ -915,24 +915,24 @@ function bar(callback: (this: 1, ...args: T) => void) { callback.bind(1); >callback.bind(1) : (...args: T) => void > : ^^^^ ^^^^^^^^^^^^ ->callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >callback : (this: 1, ...args: T) => void > : ^ ^^ ^^^^^ ^^ ^^^^^ ->bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ callback.bind(2); // Error >callback.bind(2) : (...args: T) => void > : ^^^^ ^^^^^^^^^^^^ ->callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >callback : (this: 1, ...args: T) => void > : ^ ^^ ^^^^^ ^^ ^^^^^ ->bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >2 : 2 > : ^ } @@ -950,24 +950,24 @@ function baz(callback: (this: 1, ...args: T extends 1 ? [unknow callback.bind(1); >callback.bind(1) : (...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >callback : (this: 1, ...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^ ^^ ^^^^^ ^^ ^^^^^ ->bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >1 : 1 > : ^ callback.bind(2); // Error >callback.bind(2) : (...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>callback.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >callback : (this: 1, ...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^ ^^ ^^^^^ ^^ ^^^^^ ->bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >2 : 2 > : ^ } @@ -981,16 +981,16 @@ class Foo { this.fn.bind(this); >this.fn.bind(this) : (...args: T) => void > : ^^^^ ^^ ^^^^^ ->this.fn.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>this.fn.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >this.fn : (...args: T) => void > : ^^^^ ^^ ^^^^^ >this : this > : ^^^^ >fn : (...args: T) => void > : ^^^^ ^^ ^^^^^ ->bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >this : this > : ^^^^ } @@ -1010,16 +1010,16 @@ class Bar { this.fn.bind(this); >this.fn.bind(this) : (...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^^^^ ^^ ^^^^^^^^^ ->this.fn.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>this.fn.bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >this.fn : (...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^^^^ ^^ ^^^^^^^^^ >this : this > : ^^^^ >fn : (...args: T extends 1 ? [unknown] : [unknown, unknown]) => void > : ^^^^ ^^ ^^^^^^^^^ ->bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } -> : ^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ +>bind : { (this: T_1, thisArg: ThisParameterType): OmitThisParameter; (this: (this: T_1, ...args: [...A, ...B]) => R, thisArg: T_1, ...args: A): (...args: B) => R; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^ ^^^ >this : this > : ^^^^ } diff --git a/tests/baselines/reference/strictFunctionTypes1.types b/tests/baselines/reference/strictFunctionTypes1.types index e14e8da1b8fd0..3459dbf640221 100644 --- a/tests/baselines/reference/strictFunctionTypes1.types +++ b/tests/baselines/reference/strictFunctionTypes1.types @@ -2,8 +2,8 @@ === strictFunctionTypes1.ts === declare function f1(f1: (x: T) => void, f2: (x: T) => void): (x: T) => void; ->f1 : (f1: (x: T) => void, f2: (x: T) => void) => (x: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (f1: (x: T) => void, f2: (x: T) => void) => (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f1 : (x: T) => void > : ^ ^^ ^^^^^ >x : T @@ -16,8 +16,8 @@ declare function f1(f1: (x: T) => void, f2: (x: T) => void): (x: T) => void; > : ^ declare function f2(obj: T, f1: (x: T) => void, f2: (x: T) => void): T; ->f2 : (obj: T, f1: (x: T) => void, f2: (x: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f2 : (obj: T, f1: (x: T) => void, f2: (x: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >f1 : (x: T) => void @@ -30,8 +30,8 @@ declare function f2(obj: T, f1: (x: T) => void, f2: (x: T) => void): T; > : ^ declare function f3(obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void): T; ->f3 : (obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f3 : (obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >f1 : (x: T) => void @@ -50,8 +50,8 @@ interface Func { (x: T): void } > : ^ declare function f4(f1: Func, f2: Func): Func; ->f4 : (f1: Func, f2: Func) => Func -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f4 : (f1: Func, f2: Func) => Func +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f1 : Func > : ^^^^^^^ >f2 : Func @@ -82,8 +82,8 @@ const x1 = f1(fo, fs); // (x: string) => void > : ^ ^^^^^^^^^^^^^ >f1(fo, fs) : (x: string) => void > : ^ ^^^^^^^^^^^^^ ->f1 : (f1: (x: T) => void, f2: (x: T) => void) => (x: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (f1: (x: T) => void, f2: (x: T) => void) => (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >fo : (x: Object) => void > : ^ ^^ ^^^^^ >fs : (x: string) => void @@ -94,8 +94,8 @@ const x2 = f2("abc", fo, fs); // "abc" > : ^^^^^ >f2("abc", fo, fs) : "abc" > : ^^^^^ ->f2 : (obj: T, f1: (x: T) => void, f2: (x: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f2 : (obj: T, f1: (x: T) => void, f2: (x: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >"abc" : "abc" > : ^^^^^ >fo : (x: Object) => void @@ -108,8 +108,8 @@ const x3 = f3("abc", fo, fx); // "abc" | "def" > : ^^^^^^^^^^^^^ >f3("abc", fo, fx) : "def" | "abc" > : ^^^^^^^^^^^^^ ->f3 : (obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f3 : (obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >"abc" : "abc" > : ^^^^^ >fo : (x: Object) => void @@ -122,8 +122,8 @@ const x4 = f4(fo, fs); // Func > : ^^^^^^^^^^^^ >f4(fo, fs) : Func > : ^^^^^^^^^^^^ ->f4 : (f1: Func, f2: Func) => Func -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f4 : (f1: Func, f2: Func) => Func +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >fo : (x: Object) => void > : ^ ^^ ^^^^^ >fs : (x: string) => void @@ -138,8 +138,8 @@ const x10 = f2(never, fo, fs); // string > : ^^^^^^ >f2(never, fo, fs) : string > : ^^^^^^ ->f2 : (obj: T, f1: (x: T) => void, f2: (x: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f2 : (obj: T, f1: (x: T) => void, f2: (x: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >never : never > : ^^^^^ >fo : (x: Object) => void @@ -152,8 +152,8 @@ const x11 = f3(never, fo, fx); // "def" > : ^^^^^ >f3(never, fo, fx) : "def" > : ^^^^^ ->f3 : (obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>f3 : (obj: T, f1: (x: T) => void, f2: (f: (x: T) => void) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >never : never > : ^^^^^ >fo : (x: Object) => void @@ -164,8 +164,8 @@ const x11 = f3(never, fo, fx); // "def" // Repro from #21112 declare function foo(a: ReadonlyArray): T; ->foo : (a: ReadonlyArray) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (a: ReadonlyArray) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : readonly T[] > : ^^^^^^^^^^^^ @@ -174,8 +174,8 @@ let x = foo([]); // never > : ^^^^^ >foo([]) : never > : ^^^^^ ->foo : (a: ReadonlyArray) => T -> : ^ ^^ ^^ ^^^^^ +>foo : (a: ReadonlyArray) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[] : never[] > : ^^^^^^^ @@ -210,8 +210,8 @@ declare let b: B; > : ^ declare function coAndContra(value: T, func: (t: T) => void): T; ->coAndContra : (value: T, func: (t: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContra : (value: T, func: (t: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >value : T > : ^ >func : (t: T) => void @@ -224,8 +224,8 @@ const t1: A = coAndContra(a, acceptUnion); > : ^ >coAndContra(a, acceptUnion) : A > : ^ ->coAndContra : (value: T, func: (t: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContra : (value: T, func: (t: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : A > : ^ >acceptUnion : (x: A | number) => void @@ -236,8 +236,8 @@ const t2: B = coAndContra(b, acceptA); > : ^ >coAndContra(b, acceptA) : B > : ^ ->coAndContra : (value: T, func: (t: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContra : (value: T, func: (t: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >b : B > : ^ >acceptA : (x: A) => void @@ -248,16 +248,16 @@ const t3: A = coAndContra(never, acceptA); > : ^ >coAndContra(never, acceptA) : A > : ^ ->coAndContra : (value: T, func: (t: T) => void) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContra : (value: T, func: (t: T) => void) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >never : never > : ^^^^^ >acceptA : (x: A) => void > : ^ ^^ ^^^^^ declare function coAndContraArray(value: T[], func: (t: T) => void): T[]; ->coAndContraArray : (value: T[], func: (t: T) => void) => T[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContraArray : (value: T[], func: (t: T) => void) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >value : T[] > : ^^^ >func : (t: T) => void @@ -270,8 +270,8 @@ const t4: A[] = coAndContraArray([a], acceptUnion); > : ^^^ >coAndContraArray([a], acceptUnion) : A[] > : ^^^ ->coAndContraArray : (value: T[], func: (t: T) => void) => T[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContraArray : (value: T[], func: (t: T) => void) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >[a] : A[] > : ^^^ >a : A @@ -284,8 +284,8 @@ const t5: B[] = coAndContraArray([b], acceptA); > : ^^^ >coAndContraArray([b], acceptA) : B[] > : ^^^ ->coAndContraArray : (value: T[], func: (t: T) => void) => T[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContraArray : (value: T[], func: (t: T) => void) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >[b] : B[] > : ^^^ >b : B @@ -298,8 +298,8 @@ const t6: A[] = coAndContraArray([], acceptA); > : ^^^ >coAndContraArray([], acceptA) : A[] > : ^^^ ->coAndContraArray : (value: T[], func: (t: T) => void) => T[] -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>coAndContraArray : (value: T[], func: (t: T) => void) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >[] : never[] > : ^^^^^^^ >acceptA : (x: A) => void diff --git a/tests/baselines/reference/strictNullChecksNoWidening.types b/tests/baselines/reference/strictNullChecksNoWidening.types index a6592ffbb5c7f..b01e8b42066c4 100644 --- a/tests/baselines/reference/strictNullChecksNoWidening.types +++ b/tests/baselines/reference/strictNullChecksNoWidening.types @@ -64,8 +64,8 @@ var b5 = [[], [,]]; > : ^^^^^^^^^ declare function f(x: T): T; ->f : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -74,16 +74,16 @@ var c1 = f(null); > : ^^^^ >f(null) : null > : ^^^^ ->f : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ var c2 = f(undefined); >c2 : undefined > : ^^^^^^^^^ >f(undefined) : undefined > : ^^^^^^^^^ ->f : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ @@ -92,8 +92,8 @@ var c3 = f([]); > : ^^^^^^^ >f([]) : never[] > : ^^^^^^^ ->f : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[] : never[] > : ^^^^^^^ diff --git a/tests/baselines/reference/strictOptionalProperties1.types b/tests/baselines/reference/strictOptionalProperties1.types index 6407140da10cf..b4b77e47ce8fd 100644 --- a/tests/baselines/reference/strictOptionalProperties1.types +++ b/tests/baselines/reference/strictOptionalProperties1.types @@ -888,8 +888,8 @@ declare let tx4: [(string | undefined)?]; > : ^^^^^^^^^^^^^^^^^^^^^^^ declare function f11(x: { p?: T }): T; ->f11 : (x: { p?: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>f11 : (x: { p?: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : { p?: T; } > : ^^^^^^ ^^^ >p : T | undefined @@ -898,140 +898,140 @@ declare function f11(x: { p?: T }): T; f11(ox1); // string >f11(ox1) : string > : ^^^^^^ ->f11 : (x: { p?: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>f11 : (x: { p?: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox1 : { p: string; } > : ^^^^^ ^^^ f11(ox2); // string | undefined >f11(ox2) : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->f11 : (x: { p?: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>f11 : (x: { p?: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox2 : { p: string | undefined; } > : ^^^^^ ^^^ f11(ox3); // string >f11(ox3) : string > : ^^^^^^ ->f11 : (x: { p?: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>f11 : (x: { p?: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox3 : { p?: string; } > : ^^^^^^ ^^^ f11(ox4); // string | undefined >f11(ox4) : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->f11 : (x: { p?: T; }) => T -> : ^ ^^ ^^ ^^^^^ +>f11 : (x: { p?: T; }) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox4 : { p?: string | undefined; } > : ^^^^^^ ^^^ declare function f12(x: [T?]): T; ->f12 : (x: [T?]) => T -> : ^ ^^ ^^ ^^^^^ +>f12 : (x: [T?]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : [T?] > : ^^^^ f12(tx1); // string >f12(tx1) : string > : ^^^^^^ ->f12 : (x: [T?]) => T -> : ^ ^^ ^^ ^^^^^ +>f12 : (x: [T?]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx1 : [string] > : ^^^^^^^^ f12(tx2); // string | undefined >f12(tx2) : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->f12 : (x: [T?]) => T -> : ^ ^^ ^^ ^^^^^ +>f12 : (x: [T?]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx2 : [string | undefined] > : ^^^^^^^^^^^^^^^^^^^^ f12(tx3); // string >f12(tx3) : string > : ^^^^^^ ->f12 : (x: [T?]) => T -> : ^ ^^ ^^ ^^^^^ +>f12 : (x: [T?]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx3 : [string?] > : ^^^^^^^^^ f12(tx4); // string | undefined >f12(tx4) : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->f12 : (x: [T?]) => T -> : ^ ^^ ^^ ^^^^^ +>f12 : (x: [T?]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx4 : [(string | undefined)?] > : ^^^^^^^^^^^^^^^^^^^^^^^ declare function f13(x: Partial): T; ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Partial > : ^^^^^^^^^^ f13(ox1); // { p: string } >f13(ox1) : { p: string; } > : ^^^^^ ^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox1 : { p: string; } > : ^^^^^ ^^^ f13(ox2); // { p: string | undefined } >f13(ox2) : { p: string | undefined; } > : ^^^^^ ^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox2 : { p: string | undefined; } > : ^^^^^ ^^^ f13(ox3); // { p: string } >f13(ox3) : { p: string; } > : ^^^^^ ^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox3 : { p?: string; } > : ^^^^^^ ^^^ f13(ox4); // { p: string | undefined } >f13(ox4) : { p: string | undefined; } > : ^^^^^ ^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ox4 : { p?: string | undefined; } > : ^^^^^^ ^^^ f13(tx1); // [string] >f13(tx1) : [string] > : ^^^^^^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx1 : [string] > : ^^^^^^^^ f13(tx2); // [string | undefined] >f13(tx2) : [string | undefined] > : ^^^^^^^^^^^^^^^^^^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx2 : [string | undefined] > : ^^^^^^^^^^^^^^^^^^^^ f13(tx3); // [string] >f13(tx3) : [string] > : ^^^^^^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx3 : [string?] > : ^^^^^^^^^ f13(tx4); // [string | undefined] >f13(tx4) : [string | undefined] > : ^^^^^^^^^^^^^^^^^^^^ ->f13 : (x: Partial) => T -> : ^ ^^ ^^ ^^^^^ +>f13 : (x: Partial) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >tx4 : [(string | undefined)?] > : ^^^^^^^^^^^^^^^^^^^^^^^ @@ -1042,8 +1042,8 @@ type Undefinable = T | undefined; > : ^^^^^^^^^^^^^^ function expectNotUndefined(value: Undefinable): T { ->expectNotUndefined : (value: Undefinable) => T -> : ^ ^^ ^^ ^^^^^ +>expectNotUndefined : (value: Undefinable) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : Undefinable > : ^^^^^^^^^^^^^^ @@ -1085,8 +1085,8 @@ function aa(input: Bar): void { > : ^^^^^^ >expectNotUndefined(input.bar) : number > : ^^^^^^ ->expectNotUndefined : (value: Undefinable) => T -> : ^ ^^ ^^ ^^^^^ +>expectNotUndefined : (value: Undefinable) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >input.bar : number | undefined > : ^^^^^^^^^^^^^^^^^^ >input : Bar diff --git a/tests/baselines/reference/strictSubtypeAndNarrowing.types b/tests/baselines/reference/strictSubtypeAndNarrowing.types index c6182b8e834c1..0ba8dce91bf8d 100644 --- a/tests/baselines/reference/strictSubtypeAndNarrowing.types +++ b/tests/baselines/reference/strictSubtypeAndNarrowing.types @@ -148,8 +148,8 @@ const a42 = [x41, x42]; // (...args: A) => R, where A is any, any[], never, or never[] and R is any or unknown, is supertype of all function types. declare function isFunction(x: unknown): x is T; ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : unknown > : ^^^^^^^ @@ -190,8 +190,8 @@ function fx1(f: (() => void) | undefined) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (() => void) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ @@ -218,8 +218,8 @@ function fx2(f: (() => void) | undefined) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (() => void) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ @@ -246,8 +246,8 @@ function fx3(f: (() => void) | undefined) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (() => void) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ @@ -274,8 +274,8 @@ function fx4(f: (() => void) | undefined) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (() => void) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ @@ -302,8 +302,8 @@ function checkA(f: FnTypes) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : FnTypes > : ^^^^^^^ @@ -330,8 +330,8 @@ function checkB(f: FnTypes) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : FnTypes > : ^^^^^^^ @@ -358,8 +358,8 @@ function checkC(f: FnTypes) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : FnTypes > : ^^^^^^^ @@ -386,8 +386,8 @@ function checkD(f: FnTypes) { if (isFunction(f)) { >isFunction(f) : boolean > : ^^^^^^^ ->isFunction : (x: unknown) => x is T -> : ^ ^^ ^^ ^^^^^ +>isFunction : (x: unknown) => x is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : FnTypes > : ^^^^^^^ @@ -633,8 +633,8 @@ type NarrowByDeepValue = DeepPathT extends readonly [ declare function doesValueAtDeepPathSatisfy< ->doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue -> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>doesValueAtDeepPathSatisfy : , ValueT extends unknown>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue +> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ ObjT extends object, const DeepPathT extends ReadonlyArray, @@ -710,8 +710,8 @@ function test1(foo: Foo): {value: {type: 'A'}; a?: number} { > : ^ ^^ ^^^^^ >doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isA) : boolean > : ^^^^^^^ ->doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue -> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>doesValueAtDeepPathSatisfy : , ValueT extends unknown>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue +> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >foo : Foo > : ^^^ >['value', 'type'] : ["value", "type"] @@ -749,8 +749,8 @@ function test2(foo: Foo): {value: {type: 'A'}; a?: number} { > : ^^^^^^^ >doesValueAtDeepPathSatisfy(foo, ['value', 'type'], isB) : boolean > : ^^^^^^^ ->doesValueAtDeepPathSatisfy : , ValueT>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue -> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>doesValueAtDeepPathSatisfy : , ValueT extends unknown>(obj: ObjT, deepPath: DeepPathT, predicate: (arg: unknown) => arg is ValueT) => obj is NarrowByDeepValue +> : ^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >foo : Foo > : ^^^ >['value', 'type'] : ["value", "type"] diff --git a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types index b8497dca75e20..3ee876eaddc09 100644 --- a/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types +++ b/tests/baselines/reference/taggedTemplateWithoutDeclaredHelper.types @@ -2,8 +2,8 @@ === foo.ts === function id(x: T) { ->id : (x: T) => T -> : ^ ^^ ^^ ^^^^^^ +>id : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : T > : ^ @@ -17,8 +17,8 @@ export const result = id `hello world`; > : ^^^^^^^^^^^^^^^^^^^^ >id `hello world` : TemplateStringsArray > : ^^^^^^^^^^^^^^^^^^^^ ->id : (x: T) => T -> : ^ ^^ ^^ ^^^^^^ +>id : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >`hello world` : "hello world" > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/templateInsideCallback.js b/tests/baselines/reference/templateInsideCallback.js index fff1d3a0d96e8..5e4de63f7d9f2 100644 --- a/tests/baselines/reference/templateInsideCallback.js +++ b/tests/baselines/reference/templateInsideCallback.js @@ -122,7 +122,7 @@ function flatMap(array, iterable) { * @param {(x: T) => U[]} iterable * @returns {U[]} */ -declare function flatMap(): any; +declare function flatMap(): any; /** * @overload * @template T diff --git a/tests/baselines/reference/templateInsideCallback.types b/tests/baselines/reference/templateInsideCallback.types index 55899028ca0f7..a5e7a81e65298 100644 --- a/tests/baselines/reference/templateInsideCallback.types +++ b/tests/baselines/reference/templateInsideCallback.types @@ -20,8 +20,8 @@ const identity = x => x; >identity : any > : ^^^ ->x => x : (x: any) => any -> : ^ ^^ ^^^^^^^^^^^^^ +>x => x : (x: any) => any +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ >x : any > : ^^^ >x : any @@ -56,8 +56,8 @@ const identity = x => x; * @returns {unknown[]} */ function flatMap(array, iterable = identity) { ->flatMap : { (): any; (): any; } -> : ^^^ ^^^^^^^^^^^^^^^^^^^^ +>flatMap : { (): any; (): any; } +> : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >array : unknown[] > : ^^^^^^^^^ >iterable : (x: unknown) => unknown diff --git a/tests/baselines/reference/templateLiteralConstantEvaluation.types b/tests/baselines/reference/templateLiteralConstantEvaluation.types index fa84571697298..55c16648b30ac 100644 --- a/tests/baselines/reference/templateLiteralConstantEvaluation.types +++ b/tests/baselines/reference/templateLiteralConstantEvaluation.types @@ -4,8 +4,8 @@ // https://github.com/microsoft/TypeScript/issues/58494 function fn(arg: T): T { ->fn : (arg: T) => T -> : ^ ^^ ^^ ^^^^^ +>fn : (arg: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >arg : T > : ^ @@ -51,8 +51,8 @@ const d = `${b} 3` as const; fn(`${b} 3`); >fn(`${b} 3`) : "1 2 3" > : ^^^^^^^ ->fn : (arg: T) => T -> : ^ ^^ ^^ ^^^^^ +>fn : (arg: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >`${b} 3` : "1 2 3" > : ^^^^^^^ >b : string diff --git a/tests/baselines/reference/templateLiteralTypes1.errors.txt b/tests/baselines/reference/templateLiteralTypes1.errors.txt index ed921a5dbfe66..e44076828b50d 100644 --- a/tests/baselines/reference/templateLiteralTypes1.errors.txt +++ b/tests/baselines/reference/templateLiteralTypes1.errors.txt @@ -52,7 +52,6 @@ templateLiteralTypes1.ts(252,7): error TS2590: Expression produces a union type z = x; // Error ~ !!! error TS2322: Type 'T' is not assignable to type '{ [P in keyof T & string as `p_${P}`]: T[P]; }'. -!!! related TS2208 templateLiteralTypes1.ts:38:14: This type parameter might need an `extends { [P in keyof T & string as `p_${P}`]: T[P]; }` constraint. } function fa2(x: { [P in B as `p_${P}`]: T }, y: { [Q in A as `p_${Q}`]: U }) { diff --git a/tests/baselines/reference/templateLiteralTypes1.types b/tests/baselines/reference/templateLiteralTypes1.types index 499986b2d51d4..cc70541c074a8 100644 --- a/tests/baselines/reference/templateLiteralTypes1.types +++ b/tests/baselines/reference/templateLiteralTypes1.types @@ -127,8 +127,8 @@ function test(name: `get${Capitalize}`) { } function fa1(x: T, y: { [P in keyof T]: T[P] }, z: { [P in keyof T & string as `p_${P}`]: T[P] }) { ->fa1 : (x: T, y: { [P in keyof T]: T[P]; }, z: { [P in keyof T & string as `p_${P}`]: T[P]; }) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>fa1 : (x: T, y: { [P in keyof T]: T[P]; }, z: { [P in keyof T & string as `p_${P}`]: T[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : T > : ^ >y : { [P in keyof T]: T[P]; } @@ -154,8 +154,8 @@ function fa1(x: T, y: { [P in keyof T]: T[P] }, z: { [P in keyof T & string a } function fa2(x: { [P in B as `p_${P}`]: T }, y: { [Q in A as `p_${Q}`]: U }) { ->fa2 : (x: { [P in B as `p_${P}`]: T; }, y: { [Q in A as `p_${Q}`]: U; }) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>fa2 : (x: { [P in B as `p_${P}`]: T; }, y: { [Q in A as `p_${Q}`]: U; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >x : { [P in B as `p_${P}`]: T; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ >y : { [Q in A as `p_${Q}`]: U; } @@ -358,32 +358,32 @@ type T43 = Split; // string[] // Inference and property name paths declare function getProp(obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; ->getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T_1, path: `${P0_1}.${P1_1}`): T_1[P0_1][P1_1]; (obj: T_1, path: P0_1): T_1[P0_1]; (obj: object, path: string): unknown; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T_1, path: `${P0_1}.${P1_1}`): T_1[P0_1][P1_1]; (obj: T_1, path: P0_1): T_1[P0_1]; (obj: object, path: string): unknown; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >obj : T > : ^ >path : `${P0}.${P1}.${P2}` > : ^^^^^^^^^^^^^^^^^^^ declare function getProp(obj: T, path: `${P0}.${P1}`): T[P0][P1]; ->getProp : { (obj: T_1, path: `${P0_1}.${P1_1}.${P2}`): T_1[P0_1][P1_1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T_1, path: P0_1): T_1[P0_1]; (obj: object, path: string): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T_1, path: `${P0_1}.${P1_1}.${P2}`): T_1[P0_1][P1_1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T_1, path: P0_1): T_1[P0_1]; (obj: object, path: string): unknown; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >obj : T > : ^ >path : `${P0}.${P1}` > : ^^^^^^^^^^^^^ declare function getProp(obj: T, path: P0): T[P0]; ->getProp : { (obj: T_1, path: `${P0_1}.${P1}.${P2}`): T_1[P0_1][P1][P2]; (obj: T_1, path: `${P0_1}.${P1}`): T_1[P0_1][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } -> : ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T_1, path: `${P0_1}.${P1}.${P2}`): T_1[P0_1][P1][P2]; (obj: T_1, path: `${P0_1}.${P1}`): T_1[P0_1][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >obj : T > : ^ >path : P0 > : ^^ declare function getProp(obj: object, path: string): unknown; ->getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >obj : object > : ^^^^^^ >path : string @@ -394,8 +394,8 @@ let p1 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a'); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a') : { readonly b: { readonly c: 42; readonly d: "hello"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >{ a: { b: {c: 42, d: 'hello' }}} as const : { readonly a: { readonly b: { readonly c: 42; readonly d: "hello"; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { b: {c: 42, d: 'hello' }}} : { readonly a: { readonly b: { readonly c: 42; readonly d: "hello"; }; }; } @@ -424,8 +424,8 @@ let p2 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b'); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b') : { readonly c: 42; readonly d: "hello"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >{ a: { b: {c: 42, d: 'hello' }}} as const : { readonly a: { readonly b: { readonly c: 42; readonly d: "hello"; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { b: {c: 42, d: 'hello' }}} : { readonly a: { readonly b: { readonly c: 42; readonly d: "hello"; }; }; } @@ -454,8 +454,8 @@ let p3 = getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b.d'); > : ^^^^^^^ >getProp({ a: { b: {c: 42, d: 'hello' }}} as const, 'a.b.d') : "hello" > : ^^^^^^^ ->getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } -> : ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ +>getProp : { (obj: T, path: `${P0}.${P1}.${P2}`): T[P0][P1][P2]; (obj: T, path: `${P0}.${P1}`): T[P0][P1]; (obj: T, path: P0): T[P0]; (obj: object, path: string): unknown; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^ ^^^ ^^^ >{ a: { b: {c: 42, d: 'hello' }}} as const : { readonly a: { readonly b: { readonly c: 42; readonly d: "hello"; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: { b: {c: 42, d: 'hello' }}} : { readonly a: { readonly b: { readonly c: 42; readonly d: "hello"; }; }; } @@ -489,8 +489,8 @@ type PropType = unknown; declare function getPropValue(obj: T, path: P): PropType; ->getPropValue : (obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropValue : (obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >path : P @@ -525,8 +525,8 @@ const obj = { a: { b: {c: 42, d: 'hello' }}}; getPropValue(obj, 'a'); // { b: {c: number, d: string } } >getPropValue(obj, 'a') : { b: { c: number; d: string; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->getPropValue : (obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropValue : (obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : { a: { b: { c: number; d: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -535,8 +535,8 @@ getPropValue(obj, 'a'); // { b: {c: number, d: string } } getPropValue(obj, 'a.b'); // {c: number, d: string } >getPropValue(obj, 'a.b') : { c: number; d: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ->getPropValue : (obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropValue : (obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : { a: { b: { c: number; d: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a.b' : "a.b" @@ -545,8 +545,8 @@ getPropValue(obj, 'a.b'); // {c: number, d: string } getPropValue(obj, 'a.b.d'); // string >getPropValue(obj, 'a.b.d') : string > : ^^^^^^ ->getPropValue : (obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropValue : (obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : { a: { b: { c: number; d: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a.b.d' : "a.b.d" @@ -555,8 +555,8 @@ getPropValue(obj, 'a.b.d'); // string getPropValue(obj, 'a.b.x'); // unknown >getPropValue(obj, 'a.b.x') : unknown > : ^^^^^^^ ->getPropValue : (obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropValue : (obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : { a: { b: { c: number; d: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'a.b.x' : "a.b.x" @@ -565,8 +565,8 @@ getPropValue(obj, 'a.b.x'); // unknown getPropValue(obj, s); // unknown >getPropValue(obj, s) : unknown > : ^^^^^^^ ->getPropValue : (obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getPropValue : (obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : { a: { b: { c: number; d: string; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : string @@ -820,8 +820,8 @@ type SubKeys = K extends keyof T ? `${K}.${PathKeys}` > : ^^^^^^^^^^^^^ declare function getProp2>(obj: T, path: P): PropType; ->getProp2 : >(obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getProp2 : >(obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >path : P @@ -885,8 +885,8 @@ let make = getProp2(obj2, 'cars.1.make'); // 'Trabant' > : ^^^^^^^^^ >getProp2(obj2, 'cars.1.make') : "Trabant" > : ^^^^^^^^^ ->getProp2 : >(obj: T, path: P) => PropType -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>getProp2 : >(obj: T, path: P) => PropType +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >obj2 : { readonly name: "John"; readonly age: 42; readonly cars: readonly [{ readonly make: "Ford"; readonly age: 10; }, { readonly make: "Trabant"; readonly age: 35; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'cars.1.make' : "cars.1.make" diff --git a/tests/baselines/reference/templateLiteralTypes2.types b/tests/baselines/reference/templateLiteralTypes2.types index aa664dda40406..9680bac1fc724 100644 --- a/tests/baselines/reference/templateLiteralTypes2.types +++ b/tests/baselines/reference/templateLiteralTypes2.types @@ -327,8 +327,8 @@ function ft12(s: string) { } declare function widening(x: T): T; ->widening : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>widening : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -351,8 +351,8 @@ function ft13(s: string, cond: boolean) { > : ^^^^^^ >widening(`foo${s}`) : string > : ^^^^^^ ->widening : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>widening : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >`foo${s}` : string > : ^^^^^^ >s : string @@ -363,8 +363,8 @@ function ft13(s: string, cond: boolean) { > : ^^^^^^ >widening(cond ? 'a' : `foo${s}`) : string > : ^^^^^^ ->widening : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>widening : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >cond ? 'a' : `foo${s}` : string > : ^^^^^^ >cond : boolean @@ -451,8 +451,8 @@ function ft14(t: `foo${number}`) { } declare function g1(x: T): T; ->g1 : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>g1 : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -473,8 +473,8 @@ function ft20(s: string) { > : ^^^^^^ >g1(`xyz-${s}`) : string > : ^^^^^^ ->g1 : (x: T) => T -> : ^ ^^ ^^ ^^^^^ +>g1 : (x: T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >`xyz-${s}` : string > : ^^^^^^ >s : string diff --git a/tests/baselines/reference/thisIndexOnExistingReadonlyFieldIsNotNever.types b/tests/baselines/reference/thisIndexOnExistingReadonlyFieldIsNotNever.types index 8749b6aead8df..3e600791ef9f4 100644 --- a/tests/baselines/reference/thisIndexOnExistingReadonlyFieldIsNotNever.types +++ b/tests/baselines/reference/thisIndexOnExistingReadonlyFieldIsNotNever.types @@ -31,8 +31,8 @@ class CoachMarkAnchorDecorator { > : ^^^^^^^^^^^^^^^^^^^^^^^^ decorateComponent

(anchor: P) { ->decorateComponent :

(anchor: P) => typeof CoachMarkAnchor -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>decorateComponent :

(anchor: P) => typeof CoachMarkAnchor +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >anchor : P > : ^ diff --git a/tests/baselines/reference/thisTypeInObjectLiterals2.types b/tests/baselines/reference/thisTypeInObjectLiterals2.types index 05cb646d4eea8..a73f7023773b5 100644 --- a/tests/baselines/reference/thisTypeInObjectLiterals2.types +++ b/tests/baselines/reference/thisTypeInObjectLiterals2.types @@ -639,8 +639,8 @@ type ObjectDescriptor = { } declare function makeObject(desc: ObjectDescriptor): D & M; ->makeObject : (desc: ObjectDescriptor) => D & M -> : ^ ^^ ^^ ^^ ^^^^^ +>makeObject : (desc: ObjectDescriptor) => D & M +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >desc : ObjectDescriptor > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -649,8 +649,8 @@ let x1 = makeObject({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ >makeObject({ data: { x: 0, y: 0 }, methods: { moveBy(dx: number, dy: number) { this.x += dx; // Strongly typed this this.y += dy; // Strongly typed this } }}) : { x: number; y: number; } & { moveBy(dx: number, dy: number): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ->makeObject : (desc: ObjectDescriptor) => D & M -> : ^ ^^ ^^ ^^ ^^^^^ +>makeObject : (desc: ObjectDescriptor) => D & M +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ data: { x: 0, y: 0 }, methods: { moveBy(dx: number, dy: number) { this.x += dx; // Strongly typed this this.y += dy; // Strongly typed this } }} : { data: { x: number; y: number; }; methods: { moveBy(dx: number, dy: number): void; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ @@ -726,8 +726,8 @@ type ObjectDescriptor2 = ThisType & { } declare function makeObject2(desc: ObjectDescriptor): D & M; ->makeObject2 : (desc: ObjectDescriptor) => D & M -> : ^ ^^ ^^ ^^ ^^^^^ +>makeObject2 : (desc: ObjectDescriptor) => D & M +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >desc : ObjectDescriptor > : ^^^^^^^^^^^^^^^^^^^^^^ @@ -736,8 +736,8 @@ let x2 = makeObject2({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ >makeObject2({ data: { x: 0, y: 0 }, methods: { moveBy(dx: number, dy: number) { this.x += dx; // Strongly typed this this.y += dy; // Strongly typed this } }}) : { x: number; y: number; } & { moveBy(dx: number, dy: number): void; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^ ->makeObject2 : (desc: ObjectDescriptor) => D & M -> : ^ ^^ ^^ ^^ ^^^^^ +>makeObject2 : (desc: ObjectDescriptor) => D & M +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ data: { x: 0, y: 0 }, methods: { moveBy(dx: number, dy: number) { this.x += dx; // Strongly typed this this.y += dy; // Strongly typed this } }} : { data: { x: number; y: number; }; methods: { moveBy(dx: number, dy: number): void; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ @@ -825,8 +825,8 @@ type PropDescMap = { } declare function defineProp(obj: T, name: K, desc: PropDesc & ThisType): T & Record; ->defineProp : (obj: T, name: K, desc: PropDesc & ThisType) => T & Record -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProp : (obj: T, name: K, desc: PropDesc & ThisType) => T & Record +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >name : K @@ -835,8 +835,8 @@ declare function defineProp(obj: T, name: K, desc: PropD > : ^^^^^^^^^^^^^^^^^^^^^^^^^ declare function defineProps(obj: T, descs: PropDescMap & ThisType): T & U; ->defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >descs : PropDescMap & ThisType @@ -847,8 +847,8 @@ let p10 = defineProp(p1, "foo", { value: 42 }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >defineProp(p1, "foo", { value: 42 }) : Point & Record<"foo", number> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->defineProp : (obj: T, name: K, desc: PropDesc & ThisType) => T & Record -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProp : (obj: T, name: K, desc: PropDesc & ThisType) => T & Record +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >p1 : Point > : ^^^^^ >"foo" : "foo" @@ -885,8 +885,8 @@ let p11 = defineProp(p1, "bar", { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >defineProp(p1, "bar", { get() { return this.x; }, set(value: number) { this.x = value; }}) : Point & Record<"bar", number> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->defineProp : (obj: T, name: K, desc: PropDesc & ThisType) => T & Record -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProp : (obj: T, name: K, desc: PropDesc & ThisType) => T & Record +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >p1 : Point > : ^^^^^ >"bar" : "bar" @@ -951,8 +951,8 @@ let p12 = defineProps(p1, { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >defineProps(p1, { foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }}) : Point & { foo: number; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>defineProps : (obj: T, descs: PropDescMap & ThisType) => T & U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >p1 : Point > : ^^^^^ >{ foo: { value: 42 }, bar: { get(): number { return this.x; }, set(value: number) { this.x = value; } }} : { foo: { value: number; }; bar: { get(): number; set(value: number): void; }; } @@ -1095,8 +1095,8 @@ type VueOptions = ThisType & { } declare const Vue: new (options: VueOptions) => D & M & P; ->Vue : new (options: VueOptions) => D & M & P -> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>Vue : new (options: VueOptions) => D & M & P +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >options : VueOptions > : ^^^^^^^^^^^^^^^^^^^ @@ -1105,8 +1105,8 @@ let vue = new Vue({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new Vue({ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }}) : { x: number; y: number; } & { f(x: string): number; } & { test: number; hello: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Vue : new (options: VueOptions) => D & M & P -> : ^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>Vue : new (options: VueOptions) => D & M & P +> : ^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ data: () => ({ x: 1, y: 2 }), methods: { f(x: string) { return this.x; } }, computed: { test(): number { return this.x; }, hello: { get() { return "hi"; }, set(value: string) { } } }} : { data: () => { x: number; y: number; }; methods: { f(x: string): number; }; computed: { test(): number; hello: { get(): string; set(value: string): void; }; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/thisTypeOptionalCall.types b/tests/baselines/reference/thisTypeOptionalCall.types index 3b188f12a14c2..ed37302d0ee3e 100644 --- a/tests/baselines/reference/thisTypeOptionalCall.types +++ b/tests/baselines/reference/thisTypeOptionalCall.types @@ -2,8 +2,8 @@ === thisTypeOptionalCall.ts === function maybeBind(obj: T, fn: ((this: T, ...args: A) => R) | undefined): ((...args: A) => R) | undefined { ->maybeBind : (obj: T, fn: ((this: T, ...args: A) => R) | undefined) => ((...args: A) => R) | undefined -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>maybeBind : (obj: T, fn: ((this: T, ...args: A) => R) | undefined) => ((...args: A) => R) | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >obj : T > : ^ >fn : ((this: T, ...args: A) => R) | undefined diff --git a/tests/baselines/reference/truthinessPromiseCoercion.types b/tests/baselines/reference/truthinessPromiseCoercion.types index 595d1b72af1a1..2882ed7fee1b5 100644 --- a/tests/baselines/reference/truthinessPromiseCoercion.types +++ b/tests/baselines/reference/truthinessPromiseCoercion.types @@ -118,12 +118,12 @@ async function g() { > : ^^^^^^^^^^^^^^^ >p.then.length : number > : ^^^^^^ ->p.then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>p.then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : Promise > : ^^^^^^^^^^^^^^^ ->then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: number) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >length : number > : ^^^^^^ @@ -239,14 +239,14 @@ async function i(): Promise { pf().then(); >pf().then() : Promise > : ^^^^^^^^^^^^^^^^ ->pf().then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>pf().then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pf() : Promise > : ^^^^^^^^^^^^^^^^ >pf : () => Promise > : ^^^^^^ ->then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise -> : ^ ^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : (onfulfilled?: ((value: boolean) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } return "false"; >"false" : "false" diff --git a/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.errors.txt b/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.errors.txt index 5bd0a3bf13316..e6cd6ec23d975 100644 --- a/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.errors.txt +++ b/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.errors.txt @@ -46,7 +46,6 @@ tsxNotUsingApparentTypeOfSFC.tsx(18,14): error TS2769: No overload matches this ~~~~~ !!! error TS2322: Type 'P' is not assignable to type 'IntrinsicAttributes & P'. !!! error TS2322: Type 'P' is not assignable to type 'IntrinsicAttributes'. -!!! related TS2208 tsxNotUsingApparentTypeOfSFC.tsx:5:15: This type parameter might need an `extends JSX.IntrinsicAttributes` constraint. let q = // should work ~~~~~~~~~~~ !!! error TS2769: No overload matches this call. @@ -56,8 +55,4 @@ tsxNotUsingApparentTypeOfSFC.tsx(18,14): error TS2769: No overload matches this !!! error TS2769: Overload 2 of 2, '(props: P, context?: any): MyComponent', gave the following error. !!! error TS2769: Type 'P' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly<{ children?: ReactNode; }> & Readonly

'. !!! error TS2769: Type 'P' is not assignable to type 'IntrinsicAttributes'. -!!! related TS2208 tsxNotUsingApparentTypeOfSFC.tsx:5:15: This type parameter might need an `extends JSX.IntrinsicAttributes` constraint. -!!! related TS2208 tsxNotUsingApparentTypeOfSFC.tsx:5:15: This type parameter might need an `extends JSX.IntrinsicAttributes & JSX.IntrinsicClassAttributes & Readonly<{ children?: React.ReactNode; }> & Readonly

` constraint. -!!! related TS2208 tsxNotUsingApparentTypeOfSFC.tsx:5:15: This type parameter might need an `extends JSX.IntrinsicAttributes` constraint. -!!! related TS2208 tsxNotUsingApparentTypeOfSFC.tsx:5:15: This type parameter might need an `extends JSX.IntrinsicAttributes & JSX.IntrinsicClassAttributes & Readonly<{ children?: React.ReactNode; }> & Readonly

` constraint. } \ No newline at end of file diff --git a/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.types b/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.types index 9175a0cc67294..e777706499d99 100644 --- a/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.types +++ b/tests/baselines/reference/tsxNotUsingApparentTypeOfSFC.types @@ -14,8 +14,8 @@ import React from 'react'; > : ^^^^^^^^^^^^ function test

(wrappedProps: P) { ->test :

(wrappedProps: P) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>test :

(wrappedProps: P) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >wrappedProps : P > : ^ diff --git a/tests/baselines/reference/tupleTypeInference2.types b/tests/baselines/reference/tupleTypeInference2.types index c473953ef0329..8f3f63a7f0eb7 100644 --- a/tests/baselines/reference/tupleTypeInference2.types +++ b/tests/baselines/reference/tupleTypeInference2.types @@ -8,16 +8,16 @@ type A = [R] | [R, string]; > : ^^^^ declare function f(x: A): T; ->f : (x: A) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: A) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A > : ^^^^ f([undefined, ''] as [never, string]); // T: never >f([undefined, ''] as [never, string]) : never > : ^^^^^ ->f : (x: A) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: A) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[undefined, ''] as [never, string] : [never, string] > : ^^^^^^^^^^^^^^^ >[undefined, ''] : [undefined, string] @@ -30,8 +30,8 @@ f([undefined, ''] as [never, string]); // T: never f([undefined, ''] as [void, string]); // T: void >f([undefined, ''] as [void, string]) : void > : ^^^^ ->f : (x: A) => T -> : ^ ^^ ^^ ^^^^^ +>f : (x: A) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[undefined, ''] as [void, string] : [void, string] > : ^^^^^^^^^^^^^^ >[undefined, ''] : [undefined, string] @@ -48,16 +48,16 @@ type B = [R] | [R, S]; > : ^^^^^^^ declare function g(f: B): U; ->g : (f: B) => U -> : ^ ^^ ^^ ^^ ^^^^^ +>g : (f: B) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : B > : ^^^^^^^ g([[]] as [void[]]); // U: {} >g([[]] as [void[]]) : unknown > : ^^^^^^^ ->g : (f: B) => U -> : ^ ^^ ^^ ^^ ^^^^^ +>g : (f: B) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[]] as [void[]] : [void[]] > : ^^^^^^^^ >[[]] : [never[]] @@ -70,16 +70,16 @@ type C = [R[]] | [R[], S]; > : ^^^^^^^ declare function h(f: C): U; ->h : (f: C) => U -> : ^ ^^ ^^ ^^ ^^^^^ +>h : (f: C) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : C > : ^^^^^^^ h([[]] as [void[]]); // U: {} >h([[]] as [void[]]) : unknown > : ^^^^^^^ ->h : (f: C) => U -> : ^ ^^ ^^ ^^ ^^^^^ +>h : (f: C) => U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[]] as [void[]] : [void[]] > : ^^^^^^^^ >[[]] : [never[]] @@ -94,16 +94,16 @@ type C2 = [R[]] | [R[], void]; > : ^^^^^ declare function h2(f: C2): T; ->h2 : (f: C2) => T -> : ^ ^^ ^^ ^^^^^ +>h2 : (f: C2) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : C2 > : ^^^^^ h2([[]] as [never[]]); // T: never >h2([[]] as [never[]]) : never > : ^^^^^ ->h2 : (f: C2) => T -> : ^ ^^ ^^ ^^^^^ +>h2 : (f: C2) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[]] as [never[]] : [never[]] > : ^^^^^^^^^ >[[]] : [never[]] @@ -114,8 +114,8 @@ h2([[]] as [never[]]); // T: never h2([[]] as [void[]]); // T: void >h2([[]] as [void[]]) : void > : ^^^^ ->h2 : (f: C2) => T -> : ^ ^^ ^^ ^^^^^ +>h2 : (f: C2) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[]] as [void[]] : [void[]] > : ^^^^^^^^ >[[]] : [never[]] diff --git a/tests/baselines/reference/typeGuardsAsAssertions.types b/tests/baselines/reference/typeGuardsAsAssertions.types index a012e895329a2..dac37fb71f39e 100644 --- a/tests/baselines/reference/typeGuardsAsAssertions.types +++ b/tests/baselines/reference/typeGuardsAsAssertions.types @@ -30,8 +30,8 @@ export const none : None = { none: '' }; > : ^^ export function isSome(value: Optional): value is Some { ->isSome : (value: Optional) => value is Some -> : ^ ^^ ^^ ^^^^^ +>isSome : (value: Optional) => value is Some +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : Optional > : ^^^^^^^^^^^ @@ -45,8 +45,8 @@ export function isSome(value: Optional): value is Some { } function someFrom(some: a) { ->someFrom : (some: a) => { some: a; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ +>someFrom : (some: a) => { some: a; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >some : a > : ^ @@ -58,8 +58,8 @@ function someFrom(some: a) { } export function fn(makeSome: () => r): void { ->fn : (makeSome: () => r) => void -> : ^ ^^ ^^ ^^^^^ +>fn : (makeSome: () => r) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >makeSome : () => r > : ^^^^^^ @@ -88,14 +88,14 @@ export function fn(makeSome: () => r): void { > : ^^^^^^^^^^^ >someFrom(isSome(result) ? result.some : makeSome()) : { some: r; } > : ^^^^^^^^^^^^ ->someFrom : (some: a) => { some: a; } -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^ +>someFrom : (some: a) => { some: a; } +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^ >isSome(result) ? result.some : makeSome() : r > : ^ >isSome(result) : boolean > : ^^^^^^^ ->isSome : (value: Optional) => value is Some -> : ^ ^^ ^^ ^^^^^ +>isSome : (value: Optional) => value is Some +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >result : Optional > : ^^^^^^^^^^^ >result.some : r diff --git a/tests/baselines/reference/typeGuardsTypeParameters.types b/tests/baselines/reference/typeGuardsTypeParameters.types index 40614718b6193..b8fd0beb72f36 100644 --- a/tests/baselines/reference/typeGuardsTypeParameters.types +++ b/tests/baselines/reference/typeGuardsTypeParameters.types @@ -13,8 +13,8 @@ class C { } function f1(x: T) { ->f1 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f1 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -49,8 +49,8 @@ function f1(x: T) { } function f2(x: T) { ->f2 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f2 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -89,8 +89,8 @@ function f2(x: T) { // Repro from #13872 function fun(item: { [P in keyof T]: T[P] }) { ->fun : (item: { [P in keyof T]: T[P]; }) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fun : (item: { [P in keyof T]: T[P]; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >item : { [P in keyof T]: T[P]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typeInferenceCacheInvalidation.types b/tests/baselines/reference/typeInferenceCacheInvalidation.types index 0702dd8a16bcf..0a97f1065909c 100644 --- a/tests/baselines/reference/typeInferenceCacheInvalidation.types +++ b/tests/baselines/reference/typeInferenceCacheInvalidation.types @@ -12,8 +12,8 @@ type Callback = (foo: TFoo, bar: TBar) => any > : ^^^^ declare function example>( ->example : >(foo: TFoo, callback: TCallback, bar: TBar) => TCallback -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>example : >(foo: TFoo, callback: TCallback, bar: TBar) => TCallback +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ foo: TFoo, >foo : TFoo @@ -32,8 +32,8 @@ declare function example>( example(42, (foo, bar) => ({ >example(42, (foo, bar) => ({ t: () => { let s: string = bar; }}), '42') : (foo: number, bar: string) => { t: () => void; } > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->example : >(foo: TFoo, callback: TCallback, bar: TBar) => TCallback -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>example : >(foo: TFoo, callback: TCallback, bar: TBar) => TCallback +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >42 : 42 > : ^^ >(foo, bar) => ({ t: () => { let s: string = bar; }}) : (foo: number, bar: string) => { t: () => void; } @@ -66,8 +66,8 @@ example(42, (foo, bar) => ({ example(42, (foo, bar) => ({ >example(42, (foo, bar) => ({ t() { let s: string = bar; }}), '42') : (foo: number, bar: string) => { t(): void; } > : ^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->example : >(foo: TFoo, callback: TCallback, bar: TBar) => TCallback -> : ^ ^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>example : >(foo: TFoo, callback: TCallback, bar: TBar) => TCallback +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >42 : 42 > : ^^ >(foo, bar) => ({ t() { let s: string = bar; }}) : (foo: number, bar: string) => { t(): void; } diff --git a/tests/baselines/reference/typeParameterConstModifiers.types b/tests/baselines/reference/typeParameterConstModifiers.types index 6566a49b751f2..a134dae943ba6 100644 --- a/tests/baselines/reference/typeParameterConstModifiers.types +++ b/tests/baselines/reference/typeParameterConstModifiers.types @@ -2,8 +2,8 @@ === typeParameterConstModifiers.ts === declare function f1(x: T): T; ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -12,8 +12,8 @@ const x11 = f1('a'); > : ^^^ >f1('a') : "a" > : ^^^ ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'a' : "a" > : ^^^ @@ -22,8 +22,8 @@ const x12 = f1(['a', ['b', 'c']]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f1(['a', ['b', 'c']]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >['a', ['b', 'c']] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -40,8 +40,8 @@ const x13 = f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : 1 @@ -70,8 +70,8 @@ const x13 = f1({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); > : ^^^ declare function f2(x: T | undefined): T; ->f2 : (x: T | undefined) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T | undefined) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T | undefined > : ^^^^^^^^^^^^^ @@ -80,8 +80,8 @@ const x21 = f2('a'); > : ^^^ >f2('a') : "a" > : ^^^ ->f2 : (x: T | undefined) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T | undefined) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'a' : "a" > : ^^^ @@ -90,8 +90,8 @@ const x22 = f2(['a', ['b', 'c']]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2(['a', ['b', 'c']]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f2 : (x: T | undefined) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T | undefined) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >['a', ['b', 'c']] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -108,8 +108,8 @@ const x23 = f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }) : { readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f2 : (x: T | undefined) => T -> : ^^^^^^^ ^^ ^^ ^^ ^^^^^ +>f2 : (x: T | undefined) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] } : { a: 1; b: "c"; d: ["e", 2, true, { f: "g"; }]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : 1 @@ -138,8 +138,8 @@ const x23 = f2({ a: 1, b: "c", d: ["e", 2, true, { f: "g" }] }); > : ^^^ declare function f3(x: T): T[]; ->f3 : (x: T) => T[] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f3 : (x: T) => T[] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ @@ -148,8 +148,8 @@ const x31 = f3("hello"); > : ^^^^^^^^^ >f3("hello") : "hello"[] > : ^^^^^^^^^ ->f3 : (x: T) => T[] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f3 : (x: T) => T[] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ @@ -158,14 +158,14 @@ const x32 = f3("hello"); > : ^^^^^^^^^ >f3("hello") : "hello"[] > : ^^^^^^^^^ ->f3 : (x: T) => T[] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f3 : (x: T) => T[] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ declare function f4(obj: [T, T]): T; ->f4 : (obj: [T, T]) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f4 : (obj: [T, T]) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : [T, T] > : ^^^^^^ @@ -174,8 +174,8 @@ const x41 = f4([[1, 'x'], [2, 'y']]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4([[1, 'x'], [2, 'y']]) : readonly [1, "x"] | readonly [2, "y"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f4 : (obj: [T, T]) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f4 : (obj: [T, T]) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[[1, 'x'], [2, 'y']] : [[1, "x"], [2, "y"]] > : ^^^^^^^^^^^^^^^^^^^^ >[1, 'x'] : [1, "x"] @@ -196,8 +196,8 @@ const x42 = f4([{ a: 1, b: 'x' }, { a: 2, b: 'y' }]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f4([{ a: 1, b: 'x' }, { a: 2, b: 'y' }]) : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f4 : (obj: [T, T]) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f4 : (obj: [T, T]) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[{ a: 1, b: 'x' }, { a: 2, b: 'y' }] : [{ a: 1; b: "x"; }, { a: 2; b: "y"; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a: 1, b: 'x' } : { a: 1; b: "x"; } @@ -222,8 +222,8 @@ const x42 = f4([{ a: 1, b: 'x' }, { a: 2, b: 'y' }]); > : ^^^ declare function f5(obj: { x: T, y: T }): T; ->f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f5 : (obj: { x: T; y: T; }) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { x: T; y: T; } > : ^^^^^ ^^^^^ ^^^ >x : T @@ -236,8 +236,8 @@ const x51 = f5({ x: [1, 'x'], y: [2, 'y'] }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5({ x: [1, 'x'], y: [2, 'y'] }) : readonly [1, "x"] | readonly [2, "y"] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f5 : (obj: { x: T; y: T; }) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ x: [1, 'x'], y: [2, 'y'] } : { x: [1, "x"]; y: [2, "y"]; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : [1, "x"] @@ -262,8 +262,8 @@ const x52 = f5({ x: { a: 1, b: 'x' }, y: { a: 2, b: 'y' } }); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f5({ x: { a: 1, b: 'x' }, y: { a: 2, b: 'y' } }) : { readonly a: 1; readonly b: "x"; } | { readonly a: 2; readonly b: "y"; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->f5 : (obj: { x: T; y: T; }) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f5 : (obj: { x: T; y: T; }) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ x: { a: 1, b: 'x' }, y: { a: 2, b: 'y' } } : { x: { a: 1; b: "x"; }; y: { a: 2; b: "y"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : { a: 1; b: "x"; } @@ -400,8 +400,8 @@ class C1 { > : ^ foo(x: U) { return x; } ->foo : (x: U) => U -> : ^^^^^^^ ^^ ^^ ^^^^^^ +>foo : (x: U) => U +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : U > : ^ >x : U @@ -447,12 +447,12 @@ const c72 = c71.foo(['a', ['b', 'c']]); > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c71.foo(['a', ['b', 'c']]) : readonly ["a", readonly ["b", "c"]] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->c71.foo : (x: U) => U -> : ^^^^^^^ ^^ ^^^^^^^^^ +>c71.foo : (x: U) => U +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >c71 : C1<{ readonly a: 1; readonly b: "c"; readonly d: readonly ["e", 2, true, { readonly f: "g"; }]; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (x: U) => U -> : ^^^^^^^ ^^ ^^^^^^^^^ +>foo : (x: U) => U +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ >['a', ['b', 'c']] : ["a", ["b", "c"]] > : ^^^^^^^^^^^^^^^^^ >'a' : "a" @@ -471,20 +471,20 @@ const C2 = class {} > : ^^^^^^^^^ const fx1 = (x: T) => x; ->fx1 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^^ ->(x: T) => x : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^^ +>fx1 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ +>(x: T) => x : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : T > : ^ >x : T > : ^ const fx2 = (x: T) => x; ->fx2 : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^^ ->(x: T) => x : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^^ +>fx2 : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ +>(x: T) => x : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^ >x : T > : ^ >x : T @@ -496,8 +496,8 @@ interface I1 { x: T } // Error interface I2 { f(x: T): T; ->f : (x: T) => T -> : ^^^^^^^ ^^ ^^ ^^^^^ +>f : (x: T) => T +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ } @@ -551,8 +551,8 @@ type GetPath = never; function set(obj: T, path: P, value: GetPath) {} ->set : (obj: T, path: P, value: GetPath) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>set : (obj: T, path: P, value: GetPath) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T > : ^ >path : P @@ -571,8 +571,8 @@ declare let value: "123"; set(obj, ['a', 'b', 'c'], value); >set(obj, ['a', 'b', 'c'], value) : void > : ^^^^ ->set : (obj: T, path: P, value: GetPath) => void -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>set : (obj: T, path: P, value: GetPath) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : Obj > : ^^^ >['a', 'b', 'c'] : ["a", "b", "c"] diff --git a/tests/baselines/reference/typeParameterConstModifiersReverseMappedTypes.types b/tests/baselines/reference/typeParameterConstModifiersReverseMappedTypes.types index 348154fa97f9a..72df5706ad80d 100644 --- a/tests/baselines/reference/typeParameterConstModifiersReverseMappedTypes.types +++ b/tests/baselines/reference/typeParameterConstModifiersReverseMappedTypes.types @@ -2,8 +2,8 @@ === typeParameterConstModifiersReverseMappedTypes.ts === declare function test1(obj: { ->test1 : (obj: { [K in keyof T]: T[K]; }) => [T, typeof obj] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>test1 : (obj: { [K in keyof T]: T[K]; }) => [T, typeof obj] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { [K in keyof T]: T[K]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^ @@ -17,8 +17,8 @@ const result1 = test1({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test1({ prop: "foo", nested: { nestedProp: "bar", },}) : [{ readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }, { readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test1 : (obj: { [K in keyof T]: T[K]; }) => [T, typeof obj] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>test1 : (obj: { [K in keyof T]: T[K]; }) => [T, typeof obj] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -44,8 +44,8 @@ const result1 = test1({ }); declare function test2(obj: { ->test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, typeof obj] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, typeof obj] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { readonly [K in keyof T]: T[K]; } > : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ @@ -59,8 +59,8 @@ const result2 = test2({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test2({ prop: "foo", nested: { nestedProp: "bar", },}) : [{ prop: "foo"; nested: { readonly nestedProp: "bar"; }; }, { readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, typeof obj] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>test2 : (obj: { readonly [K in keyof T]: T[K]; }) => [T, typeof obj] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -86,8 +86,8 @@ const result2 = test2({ }); declare function test3(obj: { ->test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, typeof obj] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, typeof obj] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : { -readonly [K in keyof T]: T[K]; } > : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ @@ -101,8 +101,8 @@ const result3 = test3({ > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >test3({ prop: "foo", nested: { nestedProp: "bar", },}) : [{ readonly prop: "foo"; readonly nested: { readonly nestedProp: "bar"; }; }, { prop: "foo"; nested: { readonly nestedProp: "bar"; }; }] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, typeof obj] -> : ^^^^^^^ ^^ ^^ ^^^^^ +>test3 : (obj: { -readonly [K in keyof T]: T[K]; }) => [T, typeof obj] +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >{ prop: "foo", nested: { nestedProp: "bar", },} : { prop: "foo"; nested: { nestedProp: "bar"; }; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/typePredicateFreshLiteralWidening.types b/tests/baselines/reference/typePredicateFreshLiteralWidening.types index 98bba0521eea0..879f15f15bee9 100644 --- a/tests/baselines/reference/typePredicateFreshLiteralWidening.types +++ b/tests/baselines/reference/typePredicateFreshLiteralWidening.types @@ -13,12 +13,12 @@ type Narrow = (A extends Narrowable ? A : never) | ({ }); const satisfies = ->satisfies : () => (narrow: Narrow) => Narrow -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>satisfies : () => (narrow: Narrow) => Narrow +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ () => ->() => (narrow: Narrow) => narrow : () => (narrow: Narrow) => Narrow -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>() => (narrow: Narrow) => narrow : () => (narrow: Narrow) => Narrow +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ (narrow: Narrow) => >(narrow: Narrow) => narrow : (narrow: Narrow) => Narrow @@ -33,10 +33,10 @@ const satisfies = /* ========================================================================== */ const isNotNull = (value: T | null): value is T => value !== null; ->isNotNull : (value: T | null) => value is T -> : ^ ^^ ^^ ^^^^^ ->(value: T | null): value is T => value !== null : (value: T | null) => value is T -> : ^ ^^ ^^ ^^^^^ +>isNotNull : (value: T | null) => value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>(value: T | null): value is T => value !== null : (value: T | null) => value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : T | null > : ^^^^^^^^ >value !== null : boolean @@ -57,8 +57,8 @@ const item1 = satisfies()({ value: "1" }); > : ^^^^^^^^^^^^^^^ >satisfies() : (narrow: Narrow) => Narrow > : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->satisfies : () => (narrow: Narrow) => Narrow -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>satisfies : () => (narrow: Narrow) => Narrow +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >{ value: "1" } : { value: "1"; } > : ^^^^^^^^^^^^^^^ >value : "1" @@ -73,8 +73,8 @@ const item2 = satisfies()({ value: "2" }); > : ^^^^^^^^^^^^^^^ >satisfies() : (narrow: Narrow) => Narrow > : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->satisfies : () => (narrow: Narrow) => Narrow -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>satisfies : () => (narrow: Narrow) => Narrow +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >{ value: "2" } : { value: "2"; } > : ^^^^^^^^^^^^^^^ >value : "2" @@ -89,8 +89,8 @@ const item3 = satisfies()({ value: null }); > : ^^^^^^^^^^^^^^^^ >satisfies() : (narrow: Narrow) => Narrow > : ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->satisfies : () => (narrow: Narrow) => Narrow -> : ^ ^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>satisfies : () => (narrow: Narrow) => Narrow +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >{ value: null } : { value: null; } > : ^^^^^^^^^^^^^^^^ >value : null @@ -117,16 +117,16 @@ const filteredValues2 = values2.filter(isNotNull); > : ^^^^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: "1" | "2" | null, index: number, array: ("1" | "2" | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: "1" | "2" | null, index: number, array: ("1" | "2" | null)[]) => unknown, thisArg?: any): ("1" | "2" | null)[]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->isNotNull : (value: T | null) => value is T -> : ^ ^^ ^^ ^^^^^ +>isNotNull : (value: T | null) => value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ const values1 = [item1, item2, item3].map(item => item.value); >values1 : ("1" | "2" | null)[] > : ^^^^^^^^^^^^^^^^^^^^ >[item1, item2, item3].map(item => item.value) : ("1" | "2" | null)[] > : ^^^^^^^^^^^^^^^^^^^^ ->[item1, item2, item3].map : (callbackfn: (value: { value: "1"; } | { value: "2"; } | { value: null; }, index: number, array: ({ value: "1"; } | { value: "2"; } | { value: null; })[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>[item1, item2, item3].map : (callbackfn: (value: { value: "1"; } | { value: "2"; } | { value: null; }, index: number, array: ({ value: "1"; } | { value: "2"; } | { value: null; })[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >[item1, item2, item3] : ({ value: "1"; } | { value: "2"; } | { value: null; })[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item1 : { value: "1"; } @@ -135,8 +135,8 @@ const values1 = [item1, item2, item3].map(item => item.value); > : ^^^^^^^^^^^^^^^ >item3 : { value: null; } > : ^^^^^^^^^^^^^^^^ ->map : (callbackfn: (value: { value: "1"; } | { value: "2"; } | { value: null; }, index: number, array: ({ value: "1"; } | { value: "2"; } | { value: null; })[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: { value: "1"; } | { value: "2"; } | { value: null; }, index: number, array: ({ value: "1"; } | { value: "2"; } | { value: null; })[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >item => item.value : (item: { value: "1"; } | { value: "2"; } | { value: null; }) => "1" | "2" | null > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >item : { value: "1"; } | { value: "2"; } | { value: null; } @@ -159,6 +159,6 @@ const filteredValues1 = values1.filter(isNotNull); > : ^^^^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: "1" | "2" | null, index: number, array: ("1" | "2" | null)[]) => value is S, thisArg?: any): S[]; (predicate: (value: "1" | "2" | null, index: number, array: ("1" | "2" | null)[]) => unknown, thisArg?: any): ("1" | "2" | null)[]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->isNotNull : (value: T | null) => value is T -> : ^ ^^ ^^ ^^^^^ +>isNotNull : (value: T | null) => value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ diff --git a/tests/baselines/reference/typePredicateTopLevelTypeParameter.types b/tests/baselines/reference/typePredicateTopLevelTypeParameter.types index 4de646b269f15..f1b4b3a828bf1 100644 --- a/tests/baselines/reference/typePredicateTopLevelTypeParameter.types +++ b/tests/baselines/reference/typePredicateTopLevelTypeParameter.types @@ -29,16 +29,16 @@ const admins = ['Mike', 'Joe'].map(e => getPermissions(e)); > : ^^^^^^^^^^^^^^^^^^^^^^^ >['Mike', 'Joe'].map(e => getPermissions(e)) : ("admin" | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^ ->['Mike', 'Joe'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>['Mike', 'Joe'].map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >['Mike', 'Joe'] : string[] > : ^^^^^^^^ >'Mike' : "Mike" > : ^^^^^^ >'Joe' : "Joe" > : ^^^^^ ->map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >e => getPermissions(e) : (e: string) => "admin" | undefined > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : string @@ -51,8 +51,8 @@ const admins = ['Mike', 'Joe'].map(e => getPermissions(e)); > : ^^^^^^ function isDefined(a: T | undefined): a is T { ->isDefined : (a: T | undefined) => a is T -> : ^ ^^ ^^ ^^^^^ +>isDefined : (a: T | undefined) => a is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : T | undefined > : ^^^^^^^^^^^^^ @@ -76,6 +76,6 @@ const foundAdmins = admins.filter(isDefined); // "admin"[] > : ^^^^^^^^^^^^^^^^^^^^^^^ >filter : { (predicate: (value: "admin" | undefined, index: number, array: ("admin" | undefined)[]) => value is S, thisArg?: any): S[]; (predicate: (value: "admin" | undefined, index: number, array: ("admin" | undefined)[]) => unknown, thisArg?: any): ("admin" | undefined)[]; } > : ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->isDefined : (a: T | undefined) => a is T -> : ^ ^^ ^^ ^^^^^ +>isDefined : (a: T | undefined) => a is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ diff --git a/tests/baselines/reference/typePredicatesCanNarrowByDiscriminant.types b/tests/baselines/reference/typePredicatesCanNarrowByDiscriminant.types index f88113a869107..332630db61875 100644 --- a/tests/baselines/reference/typePredicatesCanNarrowByDiscriminant.types +++ b/tests/baselines/reference/typePredicatesCanNarrowByDiscriminant.types @@ -13,8 +13,8 @@ declare const fruit: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' } > : ^^^^^^^^ declare function isOneOf(item: T, array: readonly U[]): item is U ->isOneOf : (item: T, array: readonly U[]) => item is U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>isOneOf : (item: T, array: readonly U[]) => item is U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >item : T > : ^ >array : readonly U[] @@ -23,8 +23,8 @@ declare function isOneOf(item: T, array: readonly U[]): item is if (isOneOf(fruit.kind, ['apple', 'banana'] as const)) { >isOneOf(fruit.kind, ['apple', 'banana'] as const) : boolean > : ^^^^^^^ ->isOneOf : (item: T, array: readonly U[]) => item is U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>isOneOf : (item: T, array: readonly U[]) => item is U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >fruit.kind : "apple" | "banana" | "cherry" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fruit : { kind: "apple"; } | { kind: "banana"; } | { kind: "cherry"; } @@ -76,8 +76,8 @@ const kind = fruit2.kind; if (isOneOf(kind, ['apple', 'banana'] as const)) { >isOneOf(kind, ['apple', 'banana'] as const) : boolean > : ^^^^^^^ ->isOneOf : (item: T, array: readonly U[]) => item is U -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ +>isOneOf : (item: T, array: readonly U[]) => item is U +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^ >kind : "apple" | "banana" | "cherry" > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >['apple', 'banana'] as const : readonly ["apple", "banana"] diff --git a/tests/baselines/reference/typePredicatesInUnion3.types b/tests/baselines/reference/typePredicatesInUnion3.types index 649515ad8ad25..d87f3cfd27063 100644 --- a/tests/baselines/reference/typePredicatesInUnion3.types +++ b/tests/baselines/reference/typePredicatesInUnion3.types @@ -169,8 +169,8 @@ class Type2 { } function assertType(_val: T) { ->assertType : (_val: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>assertType : (_val: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >_val : T > : ^ } @@ -192,8 +192,8 @@ if (val.predicate()) { assertType(val.attribute); // Error >assertType(val.attribute) : void > : ^^^^ ->assertType : (_val: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>assertType : (_val: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >val.attribute : number | null > : ^^^^^^^^^^^^^ >val : Type1 | Type2 diff --git a/tests/baselines/reference/typePredicatesOptionalChaining1.types b/tests/baselines/reference/typePredicatesOptionalChaining1.types index fbaaef7607fbe..a5f8fd779e801 100644 --- a/tests/baselines/reference/typePredicatesOptionalChaining1.types +++ b/tests/baselines/reference/typePredicatesOptionalChaining1.types @@ -30,8 +30,8 @@ const x: X = { }; // type guard function isNotNull(x: A): x is NonNullable { ->isNotNull : (x: A) => x is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isNotNull : (x: A) => x is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : A > : ^ @@ -84,8 +84,8 @@ isNotNull(x?.y?.z) ? title(x.y.z) : null; // should not error > : ^^^^^^^^^^^^^ >isNotNull(x?.y?.z) : boolean > : ^^^^^^^ ->isNotNull : (x: A) => x is NonNullable -> : ^ ^^ ^^ ^^^^^ +>isNotNull : (x: A) => x is NonNullable +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x?.y?.z : string | undefined > : ^^^^^^^^^^^^^^^^^^ >x?.y : { z?: string; } | undefined diff --git a/tests/baselines/reference/typeTagWithGenericSignature.types b/tests/baselines/reference/typeTagWithGenericSignature.types index e0b8c2e6e95cb..dcce71a924296 100644 --- a/tests/baselines/reference/typeTagWithGenericSignature.types +++ b/tests/baselines/reference/typeTagWithGenericSignature.types @@ -3,8 +3,8 @@ === bug25618.js === /** @type {(param?: T) => T | undefined} */ function typed(param) { ->typed : (param?: T) => T | undefined -> : ^ ^^ ^^^ ^^^^^ +>typed : (param?: T) => T | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >param : T | undefined > : ^^^^^^^^^^^^^ @@ -18,8 +18,8 @@ var n = typed(1); > : ^^^^^^^^^^^^^^^^^^ >typed(1) : 1 | undefined > : ^^^^^^^^^^^^^ ->typed : (param?: T) => T | undefined -> : ^ ^^ ^^^ ^^^^^ +>typed : (param?: T) => T | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ >1 : 1 > : ^ diff --git a/tests/baselines/reference/typeVariableTypeGuards.types b/tests/baselines/reference/typeVariableTypeGuards.types index 51faa8e79ad34..4671ddee9b927 100644 --- a/tests/baselines/reference/typeVariableTypeGuards.types +++ b/tests/baselines/reference/typeVariableTypeGuards.types @@ -269,8 +269,8 @@ function f4(obj: T | undefined, x: number) { } function f5(obj: T | undefined, key: K) { ->f5 : (obj: T | undefined, key: K) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f5 : (obj: T | undefined, key: K) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >obj : T | undefined > : ^^^^^^^^^^^^^ >key : K diff --git a/tests/baselines/reference/undefinedAssignableToGenericMappedIntersection.types b/tests/baselines/reference/undefinedAssignableToGenericMappedIntersection.types index cd8d860fa60c6..87c01fdec0bd7 100644 --- a/tests/baselines/reference/undefinedAssignableToGenericMappedIntersection.types +++ b/tests/baselines/reference/undefinedAssignableToGenericMappedIntersection.types @@ -8,8 +8,8 @@ type Errors = { [P in keyof T]: string | undefined } & {all: string | undefin > : ^^^^^^^^^^^^^^^^^^ function foo() { ->foo : () => void -> : ^ ^^^^^^^^^^^ +>foo : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ let obj!: Errors >obj : Errors diff --git a/tests/baselines/reference/unionAndIntersectionInference3.types b/tests/baselines/reference/unionAndIntersectionInference3.types index 04e874d083688..607fc2274dc95 100644 --- a/tests/baselines/reference/unionAndIntersectionInference3.types +++ b/tests/baselines/reference/unionAndIntersectionInference3.types @@ -12,16 +12,16 @@ type Maybe = T | undefined; > : ^^^^^^^^ declare function concatMaybe(...args: (Maybe | Maybe[])[]): T[]; ->concatMaybe : (...args: (Maybe | Maybe[])[]) => T[] -> : ^ ^^^^^ ^^ ^^^^^ +>concatMaybe : (...args: (Maybe | Maybe[])[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : (Maybe | Maybe[])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^ concatMaybe([1, 2, 3], 4); >concatMaybe([1, 2, 3], 4) : number[] > : ^^^^^^^^ ->concatMaybe : (...args: (Maybe | Maybe[])[]) => T[] -> : ^ ^^^^^ ^^ ^^^^^ +>concatMaybe : (...args: (Maybe | Maybe[])[]) => T[] +> : ^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 2, 3] : number[] > : ^^^^^^^^ >1 : 1 @@ -36,12 +36,12 @@ concatMaybe([1, 2, 3], 4); // Repros from #32247 const g: (com: () => Iterator | AsyncIterator) => Promise = async (com: () => Iterator | AsyncIterator): Promise => { ->g : (com: () => Iterator | AsyncIterator) => Promise -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>g : (com: () => Iterator | AsyncIterator) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >com : () => Iterator | AsyncIterator > : ^^^^^^ ->async (com: () => Iterator | AsyncIterator): Promise => { throw com;} : (com: () => Iterator | AsyncIterator) => Promise -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>async (com: () => Iterator | AsyncIterator): Promise => { throw com;} : (com: () => Iterator | AsyncIterator) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >com : () => Iterator | AsyncIterator > : ^^^^^^ @@ -68,32 +68,32 @@ interface Bar1 { } declare let f1: (x: Foo1 | Bar1) => Promise; ->f1 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ +>f1 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Foo1 | Bar1 > : ^^^^^^^^^^^^^^^^^ declare let f2: (x: Foo1 | Bar1) => Promise; ->f2 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ +>f2 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Foo1 | Bar1 > : ^^^^^^^^^^^^^^^^^ f1 = f2; ->f1 = f2 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ ->f1 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ ->f2 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ +>f1 = f2 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>f1 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>f2 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ f2 = f1; ->f2 = f1 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ ->f2 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ ->f1 : (x: Foo1 | Bar1) => Promise -> : ^ ^^ ^^ ^^^^^ +>f2 = f1 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>f2 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>f1 : (x: Foo1 | Bar1) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ type Foo2 = { >Foo2 : Foo2 @@ -118,44 +118,44 @@ type Bar2 = { } declare let g1: (x: Foo2 | Bar2) => Promise; ->g1 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ +>g1 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Foo2 | Bar2 > : ^^^^^^^^^^^^^^^^^ declare let g2: (x: Foo2 | Bar2) => Promise; ->g2 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ +>g2 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : Foo2 | Bar2 > : ^^^^^^^^^^^^^^^^^ g1 = g2; ->g1 = g2 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ ->g1 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ ->g2 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ +>g1 = g2 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>g1 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>g2 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ g2 = g1; ->g2 = g1 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ ->g2 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ ->g1 : (x: Foo2 | Bar2) => Promise -> : ^ ^^ ^^ ^^^^^ +>g2 = g1 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>g2 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ +>g1 : (x: Foo2 | Bar2) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ // Repro from #32572 declare function foo1(obj: string[] & Iterable): T; ->foo1 : (obj: string[] & Iterable) => T -> : ^ ^^ ^^ ^^^^^ +>foo1 : (obj: string[] & Iterable) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : string[] & Iterable > : ^^^^^^^^^^^^^^^^^^^^^^ declare function foo2(obj: string[] & T): T; ->foo2 : (obj: string[] & T) => T -> : ^ ^^ ^^ ^^^^^ +>foo2 : (obj: string[] & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : string[] & T > : ^^^^^^^^^^^^ @@ -174,8 +174,8 @@ let x1 = foo1(sa); // string > : ^^^^^^ >foo1(sa) : string > : ^^^^^^ ->foo1 : (obj: string[] & Iterable) => T -> : ^ ^^ ^^ ^^^^^ +>foo1 : (obj: string[] & Iterable) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >sa : string[] > : ^^^^^^^^ @@ -184,8 +184,8 @@ let y1 = foo1(sx); // string > : ^^^^^^ >foo1(sx) : string > : ^^^^^^ ->foo1 : (obj: string[] & Iterable) => T -> : ^ ^^ ^^ ^^^^^ +>foo1 : (obj: string[] & Iterable) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >sx : string[] & { extra: number; } > : ^^^^^^^^^^^^^^^^^^^^ ^^^ @@ -194,8 +194,8 @@ let x2 = foo2(sa); // unknown > : ^^^^^^^ >foo2(sa) : unknown > : ^^^^^^^ ->foo2 : (obj: string[] & T) => T -> : ^ ^^ ^^ ^^^^^ +>foo2 : (obj: string[] & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >sa : string[] > : ^^^^^^^^ @@ -204,8 +204,8 @@ let y2 = foo2(sx); // { extra: number } > : ^^^^^^^^^ ^^^ >foo2(sx) : { extra: number; } > : ^^^^^^^^^ ^^^ ->foo2 : (obj: string[] & T) => T -> : ^ ^^ ^^ ^^^^^ +>foo2 : (obj: string[] & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >sx : string[] & { extra: number; } > : ^^^^^^^^^^^^^^^^^^^^ ^^^ @@ -278,8 +278,8 @@ type AB = { a: T } | { b: T }; // T & AB normalizes to T & { a: U } | T & { b: U } below declare function foo(obj: T & AB): [T, U]; ->foo : (obj: T & AB) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>foo : (obj: T & AB) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >obj : T & AB > : ^^^^^^^^^ @@ -292,16 +292,16 @@ let z = foo(ab); // [AB, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo(ab) : [{ a: string; } | { b: string; }, string] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->foo : (obj: T & AB) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>foo : (obj: T & AB) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >ab : AB > : ^^^^^^^^^^ // Repro from #51399 declare let a: () => (T extends true ? true : false) & boolean; ->a : () => (T extends true ? true : false) & boolean -> : ^ ^^^^^^^ +>a : () => (T extends true ? true : false) & boolean +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >true : true @@ -310,8 +310,8 @@ declare let a: () => (T extends true ? true : false) & boolean; > : ^^^^^ declare let b: () => (T extends true ? true : false) & boolean; ->b : () => (T extends true ? true : false) & boolean -> : ^ ^^^^^^^ +>b : () => (T extends true ? true : false) & boolean +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >true : true @@ -320,10 +320,10 @@ declare let b: () => (T extends true ? true : false) & boolean; > : ^^^^^ a = b; ->a = b : () => (T extends true ? true : false) & boolean -> : ^ ^^^^^^^ ->a : () => (T extends true ? true : false) & boolean -> : ^ ^^^^^^^ ->b : () => (T extends true ? true : false) & boolean -> : ^ ^^^^^^^ +>a = b : () => (T extends true ? true : false) & boolean +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>a : () => (T extends true ? true : false) & boolean +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ +>b : () => (T extends true ? true : false) & boolean +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/unionCallMixedTypeParameterPresence.types b/tests/baselines/reference/unionCallMixedTypeParameterPresence.types index c16cd522b97af..f7cdaba3f3da0 100644 --- a/tests/baselines/reference/unionCallMixedTypeParameterPresence.types +++ b/tests/baselines/reference/unionCallMixedTypeParameterPresence.types @@ -5,8 +5,8 @@ interface Err { f(a: (err: T) => U): Err; ->f : (a: (err: T) => U) => Err -> : ^ ^^ ^^ ^^^^^ +>f : (a: (err: T) => U) => Err +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >a : (err: T) => U > : ^ ^^ ^^^^^ >err : T @@ -30,12 +30,12 @@ const e2 = e.f((e) => e); > : ^^^^^^^^^^^^^^^^^^^^^^^ >e.f((e) => e) : Err<2> | Err<0 | 1 | 2> > : ^^^^^^^^^^^^^^^^^^^^^^^ ->e.f : ((a: (err: 0) => U) => Err) | ((a: (err: 1) => U) => Err) | ((a: (err: 2) => unknown) => Err<2>) -> : ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^^ +>e.f : ((a: (err: 0) => U) => Err) | ((a: (err: 1) => U) => Err) | ((a: (err: 2) => unknown) => Err<2>) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^^ >e : Err<0> | Err<1> | Ok<2> > : ^^^^^^^^^^^^^^^^^^^^^^^ ->f : ((a: (err: 0) => U) => Err) | ((a: (err: 1) => U) => Err) | ((a: (err: 2) => unknown) => Err<2>) -> : ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^^ +>f : ((a: (err: 0) => U) => Err) | ((a: (err: 1) => U) => Err) | ((a: (err: 2) => unknown) => Err<2>) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^^^^^^^^^^^ >(e) => e : (e: 0 | 1 | 2) => 0 | 1 | 2 > : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >e : 0 | 1 | 2 diff --git a/tests/baselines/reference/unionOfClassCalls.types b/tests/baselines/reference/unionOfClassCalls.types index 92889ae878fbb..c6a2682398d0f 100644 --- a/tests/baselines/reference/unionOfClassCalls.types +++ b/tests/baselines/reference/unionOfClassCalls.types @@ -73,12 +73,12 @@ const arr2: string[] = []; arr.map((a: number | string, index: number) => { >arr.map((a: number | string, index: number) => { return index}) : number[] > : ^^^^^^^^ ->arr.map : ((callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>arr.map : ((callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >arr : number[] | string[] > : ^^^^^^^^^^^^^^^^^^^ ->map : ((callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) -> : ^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ +>map : ((callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[]) | ((callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[]) +> : ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^ >(a: number | string, index: number) => { return index} : (a: number | string, index: number) => number > : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : string | number @@ -96,12 +96,12 @@ arr.map((a: number | string, index: number) => { arr.reduce((acc: Array, a: number | string, index: number) => { >arr.reduce((acc: Array, a: number | string, index: number) => { return []}, []) : never[] > : ^^^^^^^ ->arr.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } | { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>arr.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } | { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >arr : number[] | string[] > : ^^^^^^^^^^^^^^^^^^^ ->reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } | { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } | { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(acc: Array, a: number | string, index: number) => { return []} : (acc: Array, a: number | string, index: number) => never[] > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >acc : string[] @@ -144,12 +144,12 @@ arr.forEach((a: number | string, index: number) => { arr1.map((a: number, index: number) => { >arr1.map((a: number, index: number) => { return index}) : number[] > : ^^^^^^^^ ->arr1.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>arr1.map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr1 : number[] > : ^^^^^^^^ ->map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(a: number, index: number) => { return index} : (a: number, index: number) => number > : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : number @@ -166,12 +166,12 @@ arr1.map((a: number, index: number) => { arr1.reduce((acc: number[], a: number, index: number) => { >arr1.reduce((acc: number[], a: number, index: number) => { return [a]}, []) : number[] > : ^^^^^^^^ ->arr1.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>arr1.reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >arr1 : number[] > : ^^^^^^^^ ->reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>reduce : { (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number): number; (callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number, initialValue: number): number; (callbackfn: (previousValue: U, currentValue: number, currentIndex: number, array: number[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(acc: number[], a: number, index: number) => { return [a]} : (acc: number[], a: number, index: number) => number[] > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^ >acc : number[] @@ -215,12 +215,12 @@ arr1.forEach((a: number, index: number) => { arr2.map((a: string, index: number) => { >arr2.map((a: string, index: number) => { return index}) : number[] > : ^^^^^^^^ ->arr2.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>arr2.map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >arr2 : string[] > : ^^^^^^^^ ->map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] -> : ^ ^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ +>map : (callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ >(a: string, index: number) => { return index} : (a: string, index: number) => number > : ^ ^^ ^^ ^^ ^^^^^^^^^^^ >a : string @@ -237,12 +237,12 @@ arr2.map((a: string, index: number) => { arr2.reduce((acc: string[], a: string, index: number) => { >arr2.reduce((acc: string[], a: string, index: number) => { return []}, []) : never[] > : ^^^^^^^ ->arr2.reduce : { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>arr2.reduce : { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >arr2 : string[] > : ^^^^^^^^ ->reduce : { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } -> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ +>reduce : { (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string): string; (callbackfn: (previousValue: string, currentValue: string, currentIndex: number, array: string[]) => string, initialValue: string): string; (callbackfn: (previousValue: U, currentValue: string, currentIndex: number, array: string[]) => U, initialValue: U): U; } +> : ^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^ ^^^^^^^^^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^ >(acc: string[], a: string, index: number) => { return []} : (acc: string[], a: string, index: number) => never[] > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^ >acc : string[] @@ -322,8 +322,8 @@ declare var a: Bar | Baz; a.doThing().then((result: Bar | Baz) => { >a.doThing().then((result: Bar | Baz) => { // whatever}) : Promise > : ^^^^^^^^^^^^^ ->a.doThing().then : ((onfulfilled?: ((value: Baz) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) | ((onfulfilled?: ((value: Bar) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) -> : ^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a.doThing().then : ((onfulfilled?: ((value: Baz) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) | ((onfulfilled?: ((value: Bar) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a.doThing() : Promise | Promise > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a.doThing : (() => Promise) | (() => Promise) @@ -332,8 +332,8 @@ a.doThing().then((result: Bar | Baz) => { > : ^^^^^^^^^ >doThing : (() => Promise) | (() => Promise) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->then : ((onfulfilled?: ((value: Baz) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) | ((onfulfilled?: ((value: Bar) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) -> : ^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>then : ((onfulfilled?: ((value: Baz) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) | ((onfulfilled?: ((value: Bar) => TResult1 | PromiseLike) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null | undefined) => Promise) +> : ^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(result: Bar | Baz) => { // whatever} : (result: Bar | Baz) => void > : ^ ^^ ^^^^^^^^^ >result : Bar | Baz diff --git a/tests/baselines/reference/unionSignaturesWithThisParameter.types b/tests/baselines/reference/unionSignaturesWithThisParameter.types index 8904534bcadde..da9410e36c0f8 100644 --- a/tests/baselines/reference/unionSignaturesWithThisParameter.types +++ b/tests/baselines/reference/unionSignaturesWithThisParameter.types @@ -4,8 +4,8 @@ // Repro from #20802 function x(ctor: { ->x : (ctor: { (this: {}, v: T): void; new (v: T): void; } | { (v: T): void; new (v: T): void; }, t: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>x : (ctor: { (this: {}, v: T): void; new (v: T): void; } | { (v: T): void; new (v: T): void; }, t: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >ctor : { (this: {}, v: T): void; new (v: T): void; } | { (v: T): void; new (v: T): void; } > : ^^^ ^^ ^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ diff --git a/tests/baselines/reference/unionTypeInference.types b/tests/baselines/reference/unionTypeInference.types index b6a3d7f113f2e..0e526b2a06fb7 100644 --- a/tests/baselines/reference/unionTypeInference.types +++ b/tests/baselines/reference/unionTypeInference.types @@ -14,8 +14,8 @@ declare const sn: string | number; > : ^^^^^^^^^^^^^^^ declare function f1(x: T, y: string | T): T; ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : string | T @@ -26,8 +26,8 @@ const a1 = f1(1, 2); // 1 | 2 > : ^^^^^ >f1(1, 2) : 1 | 2 > : ^^^^^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >1 : 1 > : ^ >2 : 2 @@ -38,8 +38,8 @@ const a2 = f1(1, "hello"); // 1 > : ^ >f1(1, "hello") : 1 > : ^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >1 : 1 > : ^ >"hello" : "hello" @@ -50,8 +50,8 @@ const a3 = f1(1, sn); // number > : ^^^^^^ >f1(1, sn) : number > : ^^^^^^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >1 : 1 > : ^ >sn : string | number @@ -62,8 +62,8 @@ const a4 = f1(undefined, "abc"); // undefined > : ^^^^^^^^^ >f1(undefined, "abc") : undefined > : ^^^^^^^^^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >undefined : undefined > : ^^^^^^^^^ >"abc" : "abc" @@ -74,8 +74,8 @@ const a5 = f1("foo", "bar"); // "foo" > : ^^^^^ >f1("foo", "bar") : "foo" > : ^^^^^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >"foo" : "foo" > : ^^^^^ >"bar" : "bar" @@ -86,8 +86,8 @@ const a6 = f1(true, false); // boolean > : ^^^^^^^ >f1(true, false) : boolean > : ^^^^^^^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >true : true > : ^^^^ >false : false @@ -98,16 +98,16 @@ const a7 = f1("hello", 1); // Error > : ^^^^^^^ >f1("hello", 1) : "hello" > : ^^^^^^^ ->f1 : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>f1 : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >"hello" : "hello" > : ^^^^^^^ >1 : 1 > : ^ declare function f2(value: [string, T]): T; ->f2 : (value: [string, T]) => T -> : ^ ^^ ^^ ^^^^^ +>f2 : (value: [string, T]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : [string, T] > : ^^^^^^^^^^^ @@ -116,8 +116,8 @@ var b1 = f2(["string", true]); // boolean > : ^^^^^^^ >f2(["string", true]) : boolean > : ^^^^^^^ ->f2 : (value: [string, T]) => T -> : ^ ^^ ^^ ^^^^^ +>f2 : (value: [string, T]) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >["string", true] : [string, true] > : ^^^^^^^^^^^^^^ >"string" : "string" @@ -126,8 +126,8 @@ var b1 = f2(["string", true]); // boolean > : ^^^^ declare function f3(x: string | false | T): T; ->f3 : (x: string | false | T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: string | false | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string | false | T > : ^^^^^^^^^^^^^^^^^^ >false : false @@ -138,8 +138,8 @@ const c1 = f3(5); // 5 > : ^ >f3(5) : 5 > : ^ ->f3 : (x: string | false | T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: string | false | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >5 : 5 > : ^ @@ -148,8 +148,8 @@ const c2 = f3(sn); // number > : ^^^^^^ >f3(sn) : number > : ^^^^^^ ->f3 : (x: string | false | T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: string | false | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >sn : string | number > : ^^^^^^^^^^^^^^^ @@ -158,8 +158,8 @@ const c3 = f3(true); // true > : ^^^^ >f3(true) : true > : ^^^^ ->f3 : (x: string | false | T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: string | false | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >true : true > : ^^^^ @@ -168,8 +168,8 @@ const c4 = f3(b); // true > : ^^^^ >f3(b) : true > : ^^^^ ->f3 : (x: string | false | T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: string | false | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >b : boolean > : ^^^^^^^ @@ -178,14 +178,14 @@ const c5 = f3("abc"); // never > : ^^^^^ >f3("abc") : "abc" > : ^^^^^ ->f3 : (x: string | false | T) => T -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: string | false | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"abc" : "abc" > : ^^^^^ declare function f4(x: string & T): T; ->f4 : (x: string & T) => T -> : ^ ^^ ^^ ^^^^^ +>f4 : (x: string & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : string & T > : ^^^^^^^^^^ @@ -194,8 +194,8 @@ const d1 = f4("abc"); > : ^^^^^ >f4("abc") : "abc" > : ^^^^^ ->f4 : (x: string & T) => T -> : ^ ^^ ^^ ^^^^^ +>f4 : (x: string & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >"abc" : "abc" > : ^^^^^ @@ -204,8 +204,8 @@ const d2 = f4(s); > : ^^^^^^^ >f4(s) : unknown > : ^^^^^^^ ->f4 : (x: string & T) => T -> : ^ ^^ ^^ ^^^^^ +>f4 : (x: string & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >s : string > : ^^^^^^ @@ -214,15 +214,15 @@ const d3 = f4(42); // Error > : ^^ >f4(42) : 42 > : ^^ ->f4 : (x: string & T) => T -> : ^ ^^ ^^ ^^^^^ +>f4 : (x: string & T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >42 : 42 > : ^^ export interface Foo { then(f: (x: T) => U | Foo, g: U): Foo; ->then : (f: (x: T) => U | Foo, g: U) => Foo -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>then : (f: (x: T) => U | Foo, g: U) => Foo +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f : (x: T) => U | Foo > : ^ ^^ ^^^^^ >x : T @@ -232,8 +232,8 @@ export interface Foo { } export interface Bar { then(f: (x: T) => S | Bar, g: S): Bar; ->then : (f: (x: T) => S | Bar, g: S) => Bar -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>then : (f: (x: T) => S | Bar, g: S) => Bar +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >f : (x: T) => S | Bar > : ^ ^^ ^^^^^ >x : T @@ -262,8 +262,8 @@ function qux(p1: Foo, p2: Bar) { // Repros from #32434 declare function foo(x: T | Promise): void; ->foo : (x: T | Promise) => void -> : ^ ^^ ^^ ^^^^^ +>foo : (x: T | Promise) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T | Promise > : ^^^^^^^^^^^^^^ @@ -278,14 +278,14 @@ declare let x: false | Promise; foo(x); >foo(x) : void > : ^^^^ ->foo : (x: T | Promise) => void -> : ^ ^^ ^^ ^^^^^ +>foo : (x: T | Promise) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : false | Promise > : ^^^^^^^^^^^^^^^^^^^^^ declare function bar(x: T, y: string | T): T; ->bar : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bar : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >x : T > : ^ >y : string | T @@ -296,8 +296,8 @@ const y = bar(1, 2); > : ^^^^^ >bar(1, 2) : 1 | 2 > : ^^^^^ ->bar : (x: T, y: string | T) => T -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>bar : (x: T, y: string | T) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >1 : 1 > : ^ >2 : 2 @@ -328,8 +328,8 @@ type DeepPromised = { [TKey in keyof T]: T[TKey] | DeepPromised | Promise> }; async function fun(deepPromised: DeepPromised) { ->fun : (deepPromised: DeepPromised) => Promise -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ +>fun : (deepPromised: DeepPromised) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >deepPromised : DeepPromised > : ^^^^^^^^^^^^^^^ @@ -346,12 +346,12 @@ async function fun(deepPromised: DeepPromised) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Object.values(deepPromisedWithIndexer) : ({} | ({ [containsPromises]?: true; } & {}) | Promise<{ [containsPromises]?: true; } & {}> | null | undefined)[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->Object.values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } -> : ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>Object.values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >Object : ObjectConstructor > : ^^^^^^^^^^^^^^^^^ ->values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } -> : ^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ +>values : { (o: { [s: string]: T_1; } | ArrayLike): T_1[]; (o: {}): any[]; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ >deepPromisedWithIndexer : DeepPromised<{ [name: string]: {} | null | undefined; }> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -372,8 +372,8 @@ async function fun(deepPromised: DeepPromised) { > : ^^^^ >fun(awaitedValue) : Promise > : ^^^^^^^^^^^^^ ->fun : (deepPromised: DeepPromised) => Promise -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ +>fun : (deepPromised: DeepPromised) => Promise +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >awaitedValue : {} | ({ [containsPromises]?: true; } & {}) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ } @@ -386,8 +386,8 @@ type Deep = { [K in keyof T]: T[K] | Deep }; > : ^^^^^^^ declare function baz(dp: Deep): T; ->baz : (dp: Deep) => T -> : ^ ^^ ^^ ^^^^^ +>baz : (dp: Deep) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >dp : Deep > : ^^^^^^^ @@ -400,8 +400,8 @@ declare let xx: { a: string | undefined }; baz(xx); >baz(xx) : { a: string | undefined; } > : ^^^^^ ^^^ ->baz : (dp: Deep) => T -> : ^ ^^ ^^ ^^^^^ +>baz : (dp: Deep) => T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >xx : { a: string | undefined; } > : ^^^^^ ^^^ diff --git a/tests/baselines/reference/uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.types b/tests/baselines/reference/uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.types index ad49bb2971c17..933484b35d04c 100644 --- a/tests/baselines/reference/uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.types +++ b/tests/baselines/reference/uniqueSymbolAssignmentOnGlobalAugmentationSuceeds.types @@ -25,8 +25,8 @@ declare global { } export function foo(p: Promise) { ->foo : (p: Promise) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>foo : (p: Promise) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >p : Promise > : ^^^^^^^^^^ diff --git a/tests/baselines/reference/unknownControlFlow.types b/tests/baselines/reference/unknownControlFlow.types index 2c84aa0d19d3e..0812db45fe4e2 100644 --- a/tests/baselines/reference/unknownControlFlow.types +++ b/tests/baselines/reference/unknownControlFlow.types @@ -125,8 +125,8 @@ function f10(x: unknown) { } function f11(x: T) { ->f11 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f11 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -277,8 +277,8 @@ function f20(x: unknown) { } function f21(x: T) { ->f21 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f21 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -467,8 +467,8 @@ function f22(x: T) { } function f23(x: T | undefined | null) { ->f23 : (x: T | undefined | null) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f23 : (x: T | undefined | null) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^ @@ -541,8 +541,8 @@ function f30(x: {}) { } function f31(x: T) { ->f31 : (x: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f31 : (x: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T > : ^ @@ -621,8 +621,8 @@ function f32(x: T) { } function possiblyNull(x: T) { ->possiblyNull : (x: T) => T | null -> : ^ ^^ ^^ ^^^^^^^^^^^^^ +>possiblyNull : (x: T) => T | null +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >x : T > : ^ @@ -640,8 +640,8 @@ function possiblyNull(x: T) { } function possiblyUndefined(x: T) { ->possiblyUndefined : (x: T) => T | undefined -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^ +>possiblyUndefined : (x: T) => T | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -661,27 +661,27 @@ function possiblyUndefined(x: T) { } function possiblyNullOrUndefined(x: T) { ->possiblyNullOrUndefined : (x: T) => T | null | undefined -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>possiblyNullOrUndefined : (x: T) => T | null | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ return possiblyUndefined(possiblyNull(x)); // T | null | undefined >possiblyUndefined(possiblyNull(x)) : T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->possiblyUndefined : (x: T_1) => T_1 | undefined -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>possiblyUndefined : (x: T_1) => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >possiblyNull(x) : T | null > : ^^^^^^^^ ->possiblyNull : (x: T_1) => T_1 | null -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^ +>possiblyNull : (x: T_1) => T_1 | null +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >x : T > : ^ } function ensureNotNull(x: T) { ->ensureNotNull : (x: T) => T & ({} | undefined) -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T) => T & ({} | undefined) +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -701,8 +701,8 @@ function ensureNotNull(x: T) { } function ensureNotUndefined(x: T) { ->ensureNotUndefined : (x: T) => T & ({} | null) -> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T) => T & ({} | null) +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ @@ -724,20 +724,20 @@ function ensureNotUndefined(x: T) { } function ensureNotNullOrUndefined(x: T) { ->ensureNotNullOrUndefined : (x: T) => T & {} -> : ^ ^^ ^^ ^^^^^^^^^^^ +>ensureNotNullOrUndefined : (x: T) => T & {} +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >x : T > : ^ return ensureNotUndefined(ensureNotNull(x)); // T & {} >ensureNotUndefined(ensureNotNull(x)) : T & {} > : ^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >ensureNotNull(x) : T & ({} | undefined) > : ^^^^^^^^^^^^^^^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : T > : ^ } @@ -755,8 +755,8 @@ function f40(a: string | undefined, b: number | null | undefined) { > : ^^^^^^ >ensureNotNullOrUndefined(a) : string > : ^^^^^^ ->ensureNotNullOrUndefined : (x: T) => T & {} -> : ^ ^^ ^^ ^^^^^^^^^^^ +>ensureNotNullOrUndefined : (x: T) => T & {} +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -765,8 +765,8 @@ function f40(a: string | undefined, b: number | null | undefined) { > : ^^^^^^ >ensureNotNullOrUndefined(b) : number > : ^^^^^^ ->ensureNotNullOrUndefined : (x: T) => T & {} -> : ^ ^^ ^^ ^^^^^^^^^^^ +>ensureNotNullOrUndefined : (x: T) => T & {} +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^ >b : number | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^ } @@ -776,8 +776,8 @@ type QQ = NonNullable>>; > : ^^^^^ function f41(a: T) { ->f41 : (a: T) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>f41 : (a: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >a : T > : ^ @@ -786,12 +786,12 @@ function f41(a: T) { > : ^^^^^^ >ensureNotUndefined(ensureNotNull(a)) : T & {} > : ^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >ensureNotNull(a) : T & ({} | undefined) > : ^^^^^^^^^^^^^^^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -800,12 +800,12 @@ function f41(a: T) { > : ^^^^^^ >ensureNotNull(ensureNotUndefined(a)) : T & {} > : ^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ensureNotUndefined(a) : T & ({} | null) > : ^^^^^^^^^^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -814,12 +814,12 @@ function f41(a: T) { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >ensureNotNull(ensureNotNull(a)) : (T & undefined) | (T & {}) > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >ensureNotNull(a) : T & ({} | undefined) > : ^^^^^^^^^^^^^^^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -828,12 +828,12 @@ function f41(a: T) { > : ^^^^^^^^^^^^^^^^^^^^^ >ensureNotUndefined(ensureNotUndefined(a)) : (T & {}) | (T & null) > : ^^^^^^^^^^^^^^^^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >ensureNotUndefined(a) : T & ({} | null) > : ^^^^^^^^^^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -842,12 +842,12 @@ function f41(a: T) { > : ^^^^^^ >ensureNotNullOrUndefined(ensureNotNullOrUndefined(a)) : T & {} > : ^^^^^^ ->ensureNotNullOrUndefined : (x: T_1) => T_1 & {} -> : ^^^^^^ ^^ ^^^^^^^^^^^^^ +>ensureNotNullOrUndefined : (x: T_1) => T_1 & {} +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >ensureNotNullOrUndefined(a) : T & {} > : ^^^^^^ ->ensureNotNullOrUndefined : (x: T_1) => T_1 & {} -> : ^^^^^^ ^^ ^^^^^^^^^^^^^ +>ensureNotNullOrUndefined : (x: T_1) => T_1 & {} +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^ >a : T > : ^ @@ -856,12 +856,12 @@ function f41(a: T) { > : ^^^^^^^^^^^^^^^^^^^^ >ensureNotNull(possiblyNullOrUndefined(a)) : (T & {}) | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >possiblyNullOrUndefined(a) : T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->possiblyNullOrUndefined : (x: T_1) => T_1 | null | undefined -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>possiblyNullOrUndefined : (x: T_1) => T_1 | null | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -870,12 +870,12 @@ function f41(a: T) { > : ^^^^^^^^^^^^^^^ >ensureNotUndefined(possiblyNullOrUndefined(a)) : (T & {}) | null > : ^^^^^^^^^^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >possiblyNullOrUndefined(a) : T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->possiblyNullOrUndefined : (x: T_1) => T_1 | null | undefined -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>possiblyNullOrUndefined : (x: T_1) => T_1 | null | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -884,12 +884,12 @@ function f41(a: T) { > : ^^^^^^^^^^^^^^^^^^^^ >ensureNotNull(possiblyUndefined(a)) : (T & {}) | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->ensureNotNull : (x: T_1) => T_1 & ({} | undefined) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotNull : (x: T_1) => T_1 & ({} | undefined) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >possiblyUndefined(a) : T | undefined > : ^^^^^^^^^^^^^ ->possiblyUndefined : (x: T_1) => T_1 | undefined -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ +>possiblyUndefined : (x: T_1) => T_1 | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ @@ -898,12 +898,12 @@ function f41(a: T) { > : ^^^^^^^^^^^^^^^ >ensureNotUndefined(possiblyNull(a)) : (T & {}) | null > : ^^^^^^^^^^^^^^^ ->ensureNotUndefined : (x: T_1) => T_1 & ({} | null) -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>ensureNotUndefined : (x: T_1) => T_1 & ({} | null) +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >possiblyNull(a) : T | null > : ^^^^^^^^ ->possiblyNull : (x: T_1) => T_1 | null -> : ^^^^^^ ^^ ^^^^^^^^^^^^^^^ +>possiblyNull : (x: T_1) => T_1 | null +> : ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^ >a : T > : ^ } @@ -911,8 +911,8 @@ function f41(a: T) { // Repro from #48468 function deepEquals(a: T, b: T): boolean { ->deepEquals : (a: T, b: T) => boolean -> : ^ ^^ ^^ ^^ ^^ ^^^^^ +>deepEquals : (a: T, b: T) => boolean +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >a : T > : ^ >b : T @@ -1026,8 +1026,8 @@ function deepEquals(a: T, b: T): boolean { // Repro from #49386 function foo(x: T | null) { ->foo : (x: T | null) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>foo : (x: T | null) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >x : T | null > : ^^^^^^^^ @@ -1054,8 +1054,8 @@ function foo(x: T | null) { // is `never` (meaning no possible keys) for any `T` that includes `undefined` or `null`. function ff1(t: T, k: keyof T) { ->ff1 : (t: T, k: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff1 : (t: T, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >k : keyof T @@ -1071,8 +1071,8 @@ function ff1(t: T, k: keyof T) { } function ff2(t: T & {}, k: keyof T) { ->ff2 : (t: T & {}, k: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff2 : (t: T & {}, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T & {} > : ^^^^^^ >k : keyof T @@ -1088,8 +1088,8 @@ function ff2(t: T & {}, k: keyof T) { } function ff3(t: T, k: keyof (T & {})) { ->ff3 : (t: T, k: keyof (T & {})) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff3 : (t: T, k: keyof (T & {})) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >k : keyof (T & {}) @@ -1105,8 +1105,8 @@ function ff3(t: T, k: keyof (T & {})) { } function ff4(t: T & {}, k: keyof (T & {})) { ->ff4 : (t: T & {}, k: keyof (T & {})) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff4 : (t: T & {}, k: keyof (T & {})) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T & {} > : ^^^^^^ >k : keyof (T & {}) @@ -1124,32 +1124,32 @@ function ff4(t: T & {}, k: keyof (T & {})) { ff1(null, 'foo'); // Error >ff1(null, 'foo') : void > : ^^^^ ->ff1 : (t: T, k: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff1 : (t: T, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ ff2(null, 'foo'); // Error >ff2(null, 'foo') : void > : ^^^^ ->ff2 : (t: T & {}, k: keyof T) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff2 : (t: T & {}, k: keyof T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ ff3(null, 'foo'); >ff3(null, 'foo') : void > : ^^^^ ->ff3 : (t: T, k: keyof (T & {})) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff3 : (t: T, k: keyof (T & {})) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ ff4(null, 'foo'); // Error >ff4(null, 'foo') : void > : ^^^^ ->ff4 : (t: T & {}, k: keyof (T & {})) => void -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>ff4 : (t: T & {}, k: keyof (T & {})) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^^^^^ >'foo' : "foo" > : ^^^^^ @@ -1172,8 +1172,8 @@ type Bar = NonNullable[string]; // Generics and intersections with {} function fx0(value: T & ({} | null)) { ->fx0 : (value: T & ({} | null)) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fx0 : (value: T & ({} | null)) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >value : T & ({} | null) > : ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/unknownLikeUnionObjectFlagsNotPropagated.types b/tests/baselines/reference/unknownLikeUnionObjectFlagsNotPropagated.types index d039ec69b225d..948663cd2aba7 100644 --- a/tests/baselines/reference/unknownLikeUnionObjectFlagsNotPropagated.types +++ b/tests/baselines/reference/unknownLikeUnionObjectFlagsNotPropagated.types @@ -34,12 +34,12 @@ async function myUnusedFunction() { > : ^^^^^^^^^^^^^^^^^ >Promise.resolve(['hello', 'world']) : Promise > : ^^^^^^^^^^^^^^^^^ ->Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>Promise.resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } -> : ^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^ +>resolve : { (): Promise; (value: T): Promise>; (value: T | PromiseLike): Promise>; } +> : ^^^^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ >['hello', 'world'] : string[] > : ^^^^^^^^ >'hello' : "hello" @@ -54,12 +54,12 @@ async function myUnusedFunction() { > : ^^^^^^^^^^ >Promise.all([fetch1]) : Promise<[string[]]> > : ^^^^^^^^^^^^^^^^^^^ ->Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>Promise.all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >Promise : PromiseConstructor > : ^^^^^^^^^^^^^^^^^^ ->all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } -> : ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ +>all : { (values: Iterable>): Promise[]>; (values: T): Promise<{ -readonly [P in keyof T]: Awaited; }>; } +> : ^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^ >[fetch1] : [Promise] > : ^^^^^^^^^^^^^^^^^^^ >fetch1 : Promise diff --git a/tests/baselines/reference/unknownType1.errors.txt b/tests/baselines/reference/unknownType1.errors.txt index 6e5e472b1c0de..e4542a59a510d 100644 --- a/tests/baselines/reference/unknownType1.errors.txt +++ b/tests/baselines/reference/unknownType1.errors.txt @@ -250,7 +250,6 @@ unknownType1.ts(181,5): error TS2322: Type 'T' is not assignable to type '{}'. let x: {} = t; ~ !!! error TS2322: Type 'T' is not assignable to type '{}'. -!!! related TS2208 unknownType1.ts:169:14: This type parameter might need an `extends {}` constraint. let y: {} = u; ~ !!! error TS2322: Type 'U' is not assignable to type '{}'. diff --git a/tests/baselines/reference/unknownType1.types b/tests/baselines/reference/unknownType1.types index 46be92d81bcea..c038ad29bb74f 100644 --- a/tests/baselines/reference/unknownType1.types +++ b/tests/baselines/reference/unknownType1.types @@ -344,8 +344,8 @@ type T52 = T50; // {} // Anything is assignable to unknown function f21(pAny: any, pNever: never, pT: T) { ->f21 : (pAny: any, pNever: never, pT: T) => void -> : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f21 : (pAny: any, pNever: never, pT: T) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >pAny : any > : ^^^ >pNever : never @@ -677,8 +677,8 @@ class C1 { // Type parameter with explicit 'unknown' constraint not assignable to '{}' function f30(t: T, u: U) { ->f30 : (t: T, u: U) => void -> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ +>f30 : (t: T, u: U) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ >t : T > : ^ >u : U diff --git a/tests/baselines/reference/unwitnessedTypeParameterVariance.types b/tests/baselines/reference/unwitnessedTypeParameterVariance.types index b88761a8c9a02..620eeda9b705a 100644 --- a/tests/baselines/reference/unwitnessedTypeParameterVariance.types +++ b/tests/baselines/reference/unwitnessedTypeParameterVariance.types @@ -16,8 +16,8 @@ export type CalcValue = CalcObj; > : ^^^^^^^^^^^^ function foo() { ->foo : () => void -> : ^ ^^^^^^^^^^^ +>foo : () => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ const unk: CalcObj = { read: (origin: unknown) => unk } >unk : CalcObj diff --git a/tests/baselines/reference/variadicTuples1.types b/tests/baselines/reference/variadicTuples1.types index a4db4781503dd..792e9a3bbbf63 100644 --- a/tests/baselines/reference/variadicTuples1.types +++ b/tests/baselines/reference/variadicTuples1.types @@ -1600,8 +1600,8 @@ type R36 = DropLast; // Inference to [...T, ...U] with implied arity for T function curry(f: (...args: [...T, ...U]) => R, ...a: T) { ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >f : (...args: [...T, ...U]) => R > : ^^^^ ^^ ^^^^^ >args : [...T, ...U] @@ -1649,8 +1649,8 @@ const c0 = curry(fn1); // (a: number, b: string, c: boolean, d: string[]) => nu > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >curry(fn1) : (a: number, b: string, c: boolean, d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn1 : (a: number, b: string, c: boolean, d: string[]) => number > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ @@ -1659,8 +1659,8 @@ const c1 = curry(fn1, 1); // (b: string, c: boolean, d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >curry(fn1, 1) : (b: string, c: boolean, d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn1 : (a: number, b: string, c: boolean, d: string[]) => number > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1671,8 +1671,8 @@ const c2 = curry(fn1, 1, 'abc'); // (c: boolean, d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >curry(fn1, 1, 'abc') : (c: boolean, d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn1 : (a: number, b: string, c: boolean, d: string[]) => number > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1685,8 +1685,8 @@ const c3 = curry(fn1, 1, 'abc', true); // (d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^ >curry(fn1, 1, 'abc', true) : (d: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn1 : (a: number, b: string, c: boolean, d: string[]) => number > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1701,8 +1701,8 @@ const c4 = curry(fn1, 1, 'abc', true, ['x', 'y']); // () => number > : ^^^^^^^^^^^^ >curry(fn1, 1, 'abc', true, ['x', 'y']) : () => number > : ^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn1 : (a: number, b: string, c: boolean, d: string[]) => number > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1737,8 +1737,8 @@ const c10 = curry(fn2); // (x: number, b: boolean, ...args: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >curry(fn2) : (x: number, b: boolean, ...args: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn2 : (x: number, b: boolean, ...args: string[]) => number > : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ @@ -1747,8 +1747,8 @@ const c11 = curry(fn2, 1); // (b: boolean, ...args: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >curry(fn2, 1) : (b: boolean, ...args: string[]) => number > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn2 : (x: number, b: boolean, ...args: string[]) => number > : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1759,8 +1759,8 @@ const c12 = curry(fn2, 1, true); // (...args: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >curry(fn2, 1, true) : (...b: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn2 : (x: number, b: boolean, ...args: string[]) => number > : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1773,8 +1773,8 @@ const c13 = curry(fn2, 1, true, 'abc', 'def'); // (...args: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >curry(fn2, 1, true, 'abc', 'def') : (...b: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn2 : (x: number, b: boolean, ...args: string[]) => number > : ^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^^^ >1 : 1 @@ -1801,8 +1801,8 @@ const c20 = curry(fn3); // (...args: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >curry(fn3) : (...b: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn3 : (...args: string[]) => number > : ^^^^ ^^ ^^^^^^^^^^^ @@ -1811,8 +1811,8 @@ const c21 = curry(fn3, 'abc', 'def'); // (...args: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >curry(fn3, 'abc', 'def') : (...b: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn3 : (...args: string[]) => number > : ^^^^ ^^ ^^^^^^^^^^^ >'abc' : "abc" @@ -1825,8 +1825,8 @@ const c22 = curry(fn3, ...sa); // (...args: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ >curry(fn3, ...sa) : (...b: string[]) => number > : ^^^^ ^^^^^^^^^^^^^^^^^^^^^ ->curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ +>curry : (f: (...args: [...T, ...U]) => R, ...a: T) => (...b: U) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^ >fn3 : (...args: string[]) => number > : ^^^^ ^^ ^^^^^^^^^^^ >...sa : string @@ -1837,8 +1837,8 @@ const c22 = curry(fn3, ...sa); // (...args: string[]) => number // No inference to [...T, ...U] when there is no implied arity function curry2(f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) { ->curry2 : (f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>curry2 : (f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >f : (...args: [...T, ...U]) => R > : ^^^^ ^^ ^^^^^ >args : [...T, ...U] @@ -1876,8 +1876,8 @@ declare function fn10(a: string, b: number, c: boolean): string[]; curry2(fn10, ['hello', 42], [true]); >curry2(fn10, ['hello', 42], [true]) : string[] > : ^^^^^^^^ ->curry2 : (f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>curry2 : (f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >fn10 : (a: string, b: number, c: boolean) => string[] > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >['hello', 42] : [string, number] @@ -1894,8 +1894,8 @@ curry2(fn10, ['hello', 42], [true]); curry2(fn10, ['hello'], [42, true]); >curry2(fn10, ['hello'], [42, true]) : string[] > : ^^^^^^^^ ->curry2 : (f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) => R -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ +>curry2 : (f: (...args: [...T, ...U]) => R, t: [...T], u: [...U]) => R +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^ >fn10 : (a: string, b: number, c: boolean) => string[] > : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >['hello'] : [string] @@ -2002,8 +2002,8 @@ ft(['a', 'b'], ['c', 'd', 42]) // Last argument is contextually typed declare function call(...args: [...T, (...args: T) => R]): [T, R]; ->call : (...args: [...T, (...args: T) => R]) => [T, R] -> : ^ ^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (...args: [...T, (...args: T) => R]) => [T, R] +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >args : [...T, (...args: T) => R] > : ^^^^^^^^^^^ ^^ ^^^^^ ^ >args : T @@ -2012,8 +2012,8 @@ declare function call(...args: [...T, (...args: T) => R] call('hello', 32, (a, b) => 42); >call('hello', 32, (a, b) => 42) : [[string, number], number] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->call : (...args: [...T, (...args: T) => R]) => [T, R] -> : ^ ^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (...args: [...T, (...args: T) => R]) => [T, R] +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >'hello' : "hello" > : ^^^^^^^ >32 : 32 @@ -2030,8 +2030,8 @@ call('hello', 32, (a, b) => 42); call(...sa, (...x) => 42); >call(...sa, (...x) => 42) : [string[], number] > : ^^^^^^^^^^^^^^^^^^ ->call : (...args: [...T, (...args: T) => R]) => [T, R] -> : ^ ^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ +>call : (...args: [...T, (...args: T) => R]) => [T, R] +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >...sa : string > : ^^^^^^ >sa : string[] @@ -2163,8 +2163,8 @@ interface Desc { > : ^ bind(this: Desc<[...T, ...U], R>, ...args: T): Desc<[...U], R>; ->bind : (this: Desc<[...T, ...U], R>, ...args: T) => Desc<[...U], R> -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>bind : (this: Desc<[...T, ...U], R>, ...args: T) => Desc<[...U], R> +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >this : Desc<[...T, ...U], R> > : ^^^^^^^^^^^^^^^^^^^^^ >args : T @@ -2180,12 +2180,12 @@ const b = a.bind("", 1); // Desc<[boolean], object> > : ^^^^^^^^^^^^^^^^^^^^^^^ >a.bind("", 1) : Desc<[boolean], object> > : ^^^^^^^^^^^^^^^^^^^^^^^ ->a.bind : (this: Desc<[...T, ...U], R>, ...args: T) => Desc<[...U], R> -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>a.bind : (this: Desc<[...T, ...U], R>, ...args: T) => Desc<[...U], R> +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >a : Desc<[string, number, boolean], object> > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->bind : (this: Desc<[...T, ...U], R>, ...args: T) => Desc<[...U], R> -> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^^^^ ^^ ^^^^^ +>bind : (this: Desc<[...T, ...U], R>, ...args: T) => Desc<[...U], R> +> : ^ ^^^^^^^^^ ^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^ ^^^^^ >"" : "" > : ^^ >1 : 1 @@ -2218,8 +2218,8 @@ declare function getOrgUser(id: string, orgId: number, options?: { y?: number, z > : ^^^^^^^^^^^^^^^^^^^ function callApi(method: (...args: [...T, object]) => U) { ->callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >method : (...args: [...T, object]) => U > : ^^^^ ^^ ^^^^^ >args : [...T, object] @@ -2245,16 +2245,16 @@ function callApi(method: (...args: [...T, ob callApi(getUser); >callApi(getUser) : (id: string) => string > : ^^^^^^^^^^^^^^^^^^^^^^ ->callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >getUser : (id: string, options?: { x?: string; }) => string > : ^ ^^ ^^ ^^^ ^^^^^ callApi(getOrgUser); >callApi(getOrgUser) : (id: string, orgId: number) => void > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U -> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ +>callApi : (method: (...args: [...T, object]) => U) => (...args: T) => U +> : ^ ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^ >getOrgUser : (id: string, orgId: number, options?: { y?: number; z?: boolean; }) => void > : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ diff --git a/tests/baselines/reference/variadicTuples2.types b/tests/baselines/reference/variadicTuples2.types index 34516c7d7582b..e1a6352fab54a 100644 --- a/tests/baselines/reference/variadicTuples2.types +++ b/tests/baselines/reference/variadicTuples2.types @@ -725,24 +725,24 @@ pipe(...sa); // Error > : ^^^^^^^^ declare function fn1(t: [...unknown[], T, U]): [T, U]; ->fn1 : (t: [...unknown[], T, U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn1 : (t: [...unknown[], T, U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >t : [...unknown[], T, U] > : ^^^^^^^^^^^^^^^^^^^^ fn1([]); // Error >fn1([]) : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ ->fn1 : (t: [...unknown[], T, U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn1 : (t: [...unknown[], T, U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[] : [] > : ^^ fn1([1]); // Error >fn1([1]) : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ ->fn1 : (t: [...unknown[], T, U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn1 : (t: [...unknown[], T, U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1] : [number] > : ^^^^^^^^ >1 : 1 @@ -751,8 +751,8 @@ fn1([1]); // Error fn1([1, 'abc']); // [number, string] >fn1([1, 'abc']) : [number, string] > : ^^^^^^^^^^^^^^^^ ->fn1 : (t: [...unknown[], T, U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn1 : (t: [...unknown[], T, U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'abc'] : [number, string] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -763,8 +763,8 @@ fn1([1, 'abc']); // [number, string] fn1([1, 'abc', true]); // [string, boolean] >fn1([1, 'abc', true]) : [string, boolean] > : ^^^^^^^^^^^^^^^^^ ->fn1 : (t: [...unknown[], T, U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn1 : (t: [...unknown[], T, U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'abc', true] : [number, string, true] > : ^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -775,24 +775,24 @@ fn1([1, 'abc', true]); // [string, boolean] > : ^^^^ declare function fn2(t: [T, ...unknown[], U]): [T, U]; ->fn2 : (t: [T, ...unknown[], U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn2 : (t: [T, ...unknown[], U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >t : [T, ...unknown[], U] > : ^^^^^^^^^^^^^^^^^^^^ fn2([]); // Error >fn2([]) : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ ->fn2 : (t: [T, ...unknown[], U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn2 : (t: [T, ...unknown[], U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[] : [] > : ^^ fn2([1]); // Error >fn2([1]) : [unknown, unknown] > : ^^^^^^^^^^^^^^^^^^ ->fn2 : (t: [T, ...unknown[], U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn2 : (t: [T, ...unknown[], U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1] : [number] > : ^^^^^^^^ >1 : 1 @@ -801,8 +801,8 @@ fn2([1]); // Error fn2([1, 'abc']); // [number, string] >fn2([1, 'abc']) : [number, string] > : ^^^^^^^^^^^^^^^^ ->fn2 : (t: [T, ...unknown[], U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn2 : (t: [T, ...unknown[], U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'abc'] : [number, string] > : ^^^^^^^^^^^^^^^^ >1 : 1 @@ -813,8 +813,8 @@ fn2([1, 'abc']); // [number, string] fn2([1, 'abc', true]); // [number, boolean] >fn2([1, 'abc', true]) : [number, boolean] > : ^^^^^^^^^^^^^^^^^ ->fn2 : (t: [T, ...unknown[], U]) => [T, U] -> : ^ ^^ ^^ ^^ ^^^^^ +>fn2 : (t: [T, ...unknown[], U]) => [T, U] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >[1, 'abc', true] : [number, string, true] > : ^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 diff --git a/tests/baselines/reference/varianceAnnotations.js b/tests/baselines/reference/varianceAnnotations.js index 72ba310e540fb..28462813a5abb 100644 --- a/tests/baselines/reference/varianceAnnotations.js +++ b/tests/baselines/reference/varianceAnnotations.js @@ -327,12 +327,12 @@ declare const qq: ActionObject<{ value: number; }>; declare let Anon: { - new (): { + new (): { foo(): InstanceType<(typeof Anon)>; }; }; declare let OuterC: { - new (): { + new (): { foo(): any; }; }; diff --git a/tests/baselines/reference/varianceAnnotations.types b/tests/baselines/reference/varianceAnnotations.types index 149ddc169d21e..f86e9f1baf700 100644 --- a/tests/baselines/reference/varianceAnnotations.types +++ b/tests/baselines/reference/varianceAnnotations.types @@ -275,14 +275,14 @@ type T23 = T; // Error > : ^ declare function f1(x: T): void; // Error ->f1 : (x: T) => void -> : ^^^^ ^^ ^^ ^^^^^ +>f1 : (x: T) => void +> : ^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function f2(): T; // Error ->f2 : () => T -> : ^^^^^ ^^^^^^^ +>f2 : () => T +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ class C { >C : C @@ -353,8 +353,8 @@ interface Child extends Parent { } function fn(inp: Child) { ->fn : (inp: Child) => void -> : ^ ^^ ^^ ^^^^^^^^^ +>fn : (inp: Child) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^ >inp : Child > : ^^^^^^^^^^^^^^^^^ @@ -436,8 +436,8 @@ declare function createMachine(action: ActionOb > : ^^^^^^^^^^^^^^^^^^^^ declare function interpret(machine: StateNode): void; ->interpret : (machine: StateNode) => void -> : ^ ^^ ^^ ^^^^^ +>interpret : (machine: StateNode) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >machine : StateNode > : ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -456,8 +456,8 @@ const machine = createMachine({} as any); interpret(machine); >interpret(machine) : void > : ^^^^ ->interpret : (machine: StateNode) => void -> : ^ ^^ ^^ ^^^^^ +>interpret : (machine: StateNode) => void +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >machine : StateNode > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/varianceMeasurement.types b/tests/baselines/reference/varianceMeasurement.types index 1c0c91e75a4f9..c5bebe4203d9c 100644 --- a/tests/baselines/reference/varianceMeasurement.types +++ b/tests/baselines/reference/varianceMeasurement.types @@ -149,8 +149,8 @@ interface Fn { > : ^ then(next: Fn): Fn; ->then : (next: Fn) => Fn -> : ^ ^^ ^^ ^^^^^ +>then : (next: Fn) => Fn +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >next : Fn > : ^^^^^^^^ } diff --git a/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types b/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types index e27a694abd66d..ba538ccc13de3 100644 --- a/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types +++ b/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign.types @@ -29,8 +29,8 @@ class Left { /** The given function is applied if this is a `Right` */ map(f: (a: A) => B): Either { ->map : (f: (a: A) => B) => Either -> : ^ ^^ ^^ ^^^^^ +>map : (f: (a: A) => B) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -42,8 +42,8 @@ class Left { > : ^^^^ } ap(fab: Either B>): Either { ->ap : (fab: Either B>) => Either -> : ^ ^^ ^^ ^^^^^ +>ap : (fab: Either B>) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fab : Either B> > : ^^^^^^^^^^^ ^^ ^^^^^ ^ >a : A @@ -77,8 +77,8 @@ class Right { > : ^ map(f: (a: A) => B): Either { ->map : (f: (a: A) => B) => Either -> : ^ ^^ ^^ ^^^^^ +>map : (f: (a: A) => B) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -101,8 +101,8 @@ class Right { > : ^ } ap(fab: Either B>): Either { ->ap : (fab: Either B>) => Either -> : ^ ^^ ^^ ^^^^^ +>ap : (fab: Either B>) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fab : Either B> > : ^^^^^^^^^^^ ^^ ^^^^^ ^ >a : A diff --git a/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types b/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types index 3cd12d54b9578..e691512fb6b28 100644 --- a/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types +++ b/tests/baselines/reference/varianceProblingAndZeroOrderIndexSignatureRelationsAlign2.types @@ -29,8 +29,8 @@ class Left { /** The given function is applied if this is a `Right` */ map(f: (a: A) => B): Either { ->map : (f: (a: A) => B) => Either -> : ^ ^^ ^^ ^^^^^ +>map : (f: (a: A) => B) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -42,8 +42,8 @@ class Left { > : ^^^^ } ap(fab: Either B>): Either { ->ap : (fab: Either B>) => Either -> : ^ ^^ ^^ ^^^^^ +>ap : (fab: Either B>) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fab : Either B> > : ^^^^^^^^^^^ ^^ ^^^^^ ^ >a : A @@ -77,8 +77,8 @@ class Right { > : ^ map(f: (a: A) => B): Either { ->map : (f: (a: A) => B) => Either -> : ^ ^^ ^^ ^^^^^ +>map : (f: (a: A) => B) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >f : (a: A) => B > : ^ ^^ ^^^^^ >a : A @@ -101,8 +101,8 @@ class Right { > : ^ } ap(fab: Either B>): Either { ->ap : (fab: Either B>) => Either -> : ^ ^^ ^^ ^^^^^ +>ap : (fab: Either B>) => Either +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >fab : Either B> > : ^^^^^^^^^^^ ^^ ^^^^^ ^ >a : A diff --git a/tests/baselines/reference/voidReturnIndexUnionInference.types b/tests/baselines/reference/voidReturnIndexUnionInference.types index 995383b34b5db..49fa8294f17f6 100644 --- a/tests/baselines/reference/voidReturnIndexUnionInference.types +++ b/tests/baselines/reference/voidReturnIndexUnionInference.types @@ -3,8 +3,8 @@ === voidReturnIndexUnionInference.ts === // repro from https://github.com/Microsoft/TypeScript/issues/25274 export function safeInvoke( ->safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ func: ((arg1: A1) => R) | null | undefined, >func : ((arg1: A1) => R) | null | undefined @@ -59,8 +59,8 @@ function bad

(props: Readonly

) { safeInvoke(props.onFoo, "blah"); >safeInvoke(props.onFoo, "blah") : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >props.onFoo : ((value: string) => boolean) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >props : Readonly

@@ -75,8 +75,8 @@ function bad

(props: Readonly

) { safeInvoke(props.onBar, "blah"); >safeInvoke(props.onBar, "blah") : void | undefined > : ^^^^^^^^^^^^^^^^ ->safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined -> : ^ ^^ ^^ ^^ ^^ ^^ ^^^^^ +>safeInvoke : (func: ((arg1: A1) => R) | null | undefined, arg1: A1) => R | undefined +> : ^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^^^^ >props.onBar : ((value: string) => void) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >props : Readonly

diff --git a/tests/baselines/reference/voidUndefinedReduction.types b/tests/baselines/reference/voidUndefinedReduction.types index b1f9ed6009be1..9636bdb9a2a9b 100644 --- a/tests/baselines/reference/voidUndefinedReduction.types +++ b/tests/baselines/reference/voidUndefinedReduction.types @@ -4,8 +4,8 @@ // Repro from #42786 function isDefined(value: T | undefined | null | void): value is T { ->isDefined : (value: T | undefined | null | void) => value is T -> : ^ ^^ ^^ ^^^^^ +>isDefined : (value: T | undefined | null | void) => value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >value : void | T | null | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -31,8 +31,8 @@ declare const foo: string | undefined; if (isDefined(foo)) { >isDefined(foo) : boolean > : ^^^^^^^ ->isDefined : (value: T | undefined | null | void) => value is T -> : ^ ^^ ^^ ^^^^^ +>isDefined : (value: T | undefined | null | void) => value is T +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >foo : string | undefined > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/wideningWithTopLevelTypeParameter.types b/tests/baselines/reference/wideningWithTopLevelTypeParameter.types index 7ace3f1022539..0037970c856ab 100644 --- a/tests/baselines/reference/wideningWithTopLevelTypeParameter.types +++ b/tests/baselines/reference/wideningWithTopLevelTypeParameter.types @@ -18,32 +18,32 @@ type C4 = T extends unknown ? T | undefined : never; > : ^^^^^ declare function f0(x: T): [T]; ->f0 : (x: T) => [T] -> : ^ ^^ ^^ ^^^^^ +>f0 : (x: T) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : T > : ^ declare function f1(x: C1): [T]; ->f1 : (x: C1) => [T] -> : ^ ^^ ^^ ^^^^^ +>f1 : (x: C1) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : C1 > : ^^^^^ declare function f2(x: C1>): [T]; ->f2 : (x: C1>) => [T] -> : ^ ^^ ^^ ^^^^^ +>f2 : (x: C1>) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : C1> > : ^^^^^^^^^ declare function f3(x: C1>>): [T]; ->f3 : (x: C1>>) => [T] -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: C1>>) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : C1>> > : ^^^^^^^^^^^^^ declare function f4(x: C1>>>): [T]; ->f4 : (x: C1>>>) => [T] -> : ^ ^^ ^^ ^^^^^ +>f4 : (x: C1>>>) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >x : C1>>> > : ^^^^^^^^^^^^^^^^^ @@ -52,8 +52,8 @@ const c0 = f0(7); // [number] > : ^^^^^^^^ >f0(7) : [number] > : ^^^^^^^^ ->f0 : (x: T) => [T] -> : ^ ^^ ^^ ^^^^^ +>f0 : (x: T) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >7 : 7 > : ^ @@ -62,8 +62,8 @@ const c1 = f1(7); // [number] > : ^^^^^^^^ >f1(7) : [number] > : ^^^^^^^^ ->f1 : (x: C1) => [T] -> : ^ ^^ ^^ ^^^^^ +>f1 : (x: C1) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >7 : 7 > : ^ @@ -72,8 +72,8 @@ const c2 = f2(7); // [number] > : ^^^^^^^^ >f2(7) : [number] > : ^^^^^^^^ ->f2 : (x: C1>) => [T] -> : ^ ^^ ^^ ^^^^^ +>f2 : (x: C1>) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >7 : 7 > : ^ @@ -82,8 +82,8 @@ const c3 = f3(7); // [number] > : ^^^^^^^^ >f3(7) : [number] > : ^^^^^^^^ ->f3 : (x: C1>>) => [T] -> : ^ ^^ ^^ ^^^^^ +>f3 : (x: C1>>) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >7 : 7 > : ^ @@ -92,8 +92,8 @@ const c4 = f4(7); // [7] since we have an internal nesting limit of 3 > : ^^^ >f4(7) : [7] > : ^^^ ->f4 : (x: C1>>>) => [T] -> : ^ ^^ ^^ ^^^^^ +>f4 : (x: C1>>>) => [T] +> : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ >7 : 7 > : ^